交换A与B值的四种方法
在网上看到了这样一道面试题,“int A=5,int B=2,怎样交换A与B的值”,或许这是一道简单到不能再简单的题,但能作为一道面试题,肯定有其独特之处
大多数人会通过定义第三个变量来中转,即:
方法一:
int temp;
temp=A;
A=B;
B=temp;
其实除了这种方法,还可以不通过中间变量,仅经过简单运算就地交换
例如:利用加减法
方法二:
A=B-A=2-5=-3;
B=B-A=2-(-3)=5;
A=A+B=-3+5=2;
当然,还可以再简化一下,这种方法我是没有想到
方法三:
A=A+B-(B=A)=5+2-5=2
同时B也被替换成了5.
还可以通过异或运算(相同为0,不同为1)来完成
方法四:A=A^B; A=A^B; A=A^B;
或者A^=B^=A^=B;
具体过程如下:
A=A^B;
B=A^B=(A^B)^B=A^(B^B)=A^0=A;
A=A^B=(A^B)^A=(A^A)^B=0^B=B;
交换A与B值的四种方法的更多相关文章
- JS去除数组中重复值的四种方法
JS去除数组中重复值的四种方法 1 /// <summary> o[this[i]] = ""; } } newArr.p ...
- JAVA中获取文件MD5值的四种方法
JAVA中获取文件MD5值的四种方法其实都很类似,因为核心都是通过JAVA自带的MessageDigest类来实现.获取文件MD5值主要分为三个步骤,第一步获取文件的byte信息,第二步通过Messa ...
- Activity的跳转及返回值 的四种方法
Activity生命周期 从创建到销毁的生命周期: onCreate()→onStart()→onResume()→onPouse()→onStop()→onDestroy() 从起动到后台再到前台: ...
- 使用位运算、值交换等方式反转java字符串-共四种方法
在本文中,我们将向您展示几种在Java中将String类型的字符串字母倒序的几种方法. StringBuilder(str).reverse() char[]循环与值交换 byte循环与值交换 apa ...
- html5 获取和设置data-*属性值的四种方法讲解
1.获取id的对象 2.需要获取的就是data-id 和 dtat-vice-id的值 一:getAttribute()方法 const getId = document.getElementById ...
- vue组件之间值传递四种方法汇总
1.父组件获取子组件的数据和方法 $refs 子组件: <template> <div class="header"> <h3>{{ zz }} ...
- 两个变量交换的四种方法(Java)
对于两种变量的交换,我发现四种方法,下面我用Java来演示一下. 1.利用第三个变量交换数值,简单的方法. (代码演示一下) class TestEV //创建一个类 { public static ...
- 【AS3】Flash与后台数据交换四种方法整理
随着Flash Player 9的普及,AS3编程也越来越多了,所以这次重新整理AS3下几种与后台数据交换方法.1.URLLoader(URLStream)2.FlashRemoting3.XMLSo ...
- 两个变量交换的四种方法(Java) 七种方法(JS)
两个变量交换的四种方法(Java) 对于两种变量的交换,我发现四种方法,下面我用Java来演示一下. 1.利用第三个变量交换数值,简单的方法. (代码演示一下) 1 class TestEV 2 ...
随机推荐
- shu_1241 邮局位置问题
http://202.121.199.212/JudgeOnline/problem.php?cid=1078&pid=5 分析: 由于题目中的距离是折线距离,所以能够分别考虑两个方向.又x方 ...
- poj - 1170 - Shopping Offers(减少国家dp)
意甲冠军:b(0 <= b <= 5)商品的种类,每个人都有一个标签c(1 <= c <= 999),有需要购买若干k(1 <= k <=5),有一个单价p(1 & ...
- aMule代码分析(2)——CFileDataIO类和CFile类
aMule中的类很多,Maixee今天选择了两个比较基础的类,均是跟文件操作有关的,分别是CFileDataIO类和CFile类.其中,前者是基类,后者由它派生而出的.具体的继承关系,可以参考这张图: ...
- TreeSet排序
TreeSet的排序能够通过两种方法来实现: 1.通过TreeSet(Comparator<? super E> comparator) 构造方法指定TreeSet的比較器进行排序. 2. ...
- Python – Get Object’s Class Name | Ridge Solutions, Ireland
Python – Get Object’s Class Name | Ridge Solutions, Ireland Python – Get Object’s Class Name Author: ...
- SWT的TreeViewer和TableViewer的交互
左边是一个TreeViewer,右边是一个TableViewer.当点击左边的treeitem的时候,右边的tableViewer要将该item的子节点信息显示出来.就像这样: 左边的treeView ...
- java文字转成拼音
package com.jframe.kit; import net.sourceforge.pinyin4j.PinyinHelper; import net.sourceforge.pinyin4 ...
- Web监听器导图详解(转)
阅读目录 Web监听器 监听器的分类 Servlet版本与Tomcat版本 getAttribute与getParameter的区别 参考 监听器是JAVA Web开发中很重要的内容,其中涉及到的知识 ...
- windows使用nginx+memcached实现负载均衡和session或者缓存共享
windows使用nginx+memcached实现负载均衡和session或者缓存共享 两台server server1:115.29.186.215 windows2008 64位操作系统 ser ...
- 【教你zencart仿站 文章1至6教训 高清1280x900视频下载】[支持手机端]
[教你zencart仿站 第1至6课 高清晰1280x900视频下载][支持移动端] 经过筹备, 我们的课件最终出来了- 我们 zencart联盟合伙人 项目推出的 在线yy同步演示zencart仿站 ...