面试题:交换2个数字,要求高效快速.(可用三种方式实现交换2个数字)
来源:互联网 发布:录播软件 编辑:程序博客网 时间:2024/04/30 05:08
交换2个数字一般有三种方式:
第一种是利用一个三方变量temp作为临时变量交换
第二种是利用a+b,a-a之类的方式交换(a+b可能会溢出)
第三种是利用异或运算方式告诉的交换数字
package java基础题目;/* * 问题:交换2个数字,要求高效 * 位异或运算:相同则0(0^0,1^1),不同则1(1^0,0^1) * 位或运算:如果2个位都是0则是0(0|0),其余情况都是1(0|1,1|0,1|1) */public class A2015年6月6日交换2个数字 {public static void main(String[] args) {int a = 10;int b = 20;System.out.println("原始的a=" + a + ",b=" + b);method1(a, b);method2(a, b);method3(a, b);}// 方式一()一般开发时采用第三方变量,易于理解!public static void method1(int a, int b) {int temp = a;a = b;b = temp;System.out.println("借用中间变量temp交换数据a=" + a + ",b=" + b);}// 方式二:如果a+b的值超出了int的范围就会有数据溢出。public static void method2(int a, int b) {a = a + b;// a=30=10+20b = a - b;// b=10=30-20a = a - b;// a=20=30-10System.out.println("a=" + a + ",b=" + b);}// 方式三:面试时就写这种异或运算交换2个数字(异或运算不会溢出)// 有关异或运算的结论:针对同一个数据异或两次,该数本身不变,比如:a^b^b=a,a^b^a=bpublic static void method3(int a, int b) {a = a ^ b;b = a ^ b;// b=a^b^b,a异或2个b就是aa = a ^ b;// a=a^b^a,b异或2个a就是b,// 所以2个数字就交换了System.out.println("运用异或运算交换2个数据a=" + a + ",b=" + b);}}
0 0
- 面试题:交换2个数字,要求高效快速.(可用三种方式实现交换2个数字)
- 高效交换2个值
- java面试题之----无中间变量实现交换数字
- C语言快速交换2数字
- 微软面试题:有100万个数字(1到9),其中只有1个数字重复2次,如何快速找出该数字
- 微软面试题:有100万个数字(1到9),其中只有1个数字重复2次,如何快速找出该数字
- 微软面试题:有100万个数字(1到9),其中只有1个数字重复2次,如何快速找出该数字
- 微软面试题:有100万个数字(1到9),其中只有1个数字重复2次,如何快速找出该数字
- 微软面试题:有100万个数字(1到9),其中只有1个数字重复2次,如何快速找出该数字
- 微软面试题:有100万个数字(1到9),其中只有1个数字重复2次,如何快速找出该数字
- [每日练习]Amazon面试题:数组有N-2个数字,数字的范围为1 ... N,没有重复的元素,要求打印缺少的2个数字,不可以用额外的空间
- 关于 华为面试题 2个数组交换的问题的代码
- 数字交换
- 数字交换
- 用3种方法实现2个变量的交换
- 不利用第三个变量交换两个数字的值
- [2016/12/5]不用第三个变量交换两个数字
- 不借助第三个变量实现两个变量的交换(数字或者字符串)
- 手动添加uc应用及其 提示notelist表缺少appX字段的处理方法
- akoj-1267-独木舟上的荡漾
- 面试题:说说或运算、异或运算
- ajax 设置Access-Control-Allow-Origin实现跨域访问
- Discuz!X3.2 uc_server密码正确无法登录的解决方法
- 面试题:交换2个数字,要求高效快速.(可用三种方式实现交换2个数字)
- redhat 网络无人值守安装
- LordPe dump进程内存实现
- OC对象归档
- java final 与引用类型变量和基本类型区别
- POJ 3723 Conscription
- Lemon OA第2篇:功能解析方法
- 如何导入hadoop源码到eclipse
- C#高级编程第二天