〔面试题〕无需额外变量交换两个变量的方法
来源:互联网 发布:广州中智软件 编辑:程序博客网 时间:2024/04/28 15:10
两种方法:
1.使用异或
1 void swap(int a,int b)
2 {
3 a=a^b;
4 b=b^a; //b^a相当于 b^a^b 也就是 b^a^b的值就是a了, 下边相同
5 a=a^b;
6 }
2 {
3 a=a^b;
4 b=b^a; //b^a相当于 b^a^b 也就是 b^a^b的值就是a了, 下边相同
5 a=a^b;
6 }
也有人写成了一句,就是读起来麻烦些:)
a^=b^=a^=b;
2.使用加减
1 void swap(int a,int b)
2 {
3 a = a + b ;
4 b = a - b ;
5 a = a - b ;
6 }
2 {
3 a = a + b ;
4 b = a - b ;
5 a = a - b ;
6 }
- 〔面试题〕无需额外变量交换两个变量的方法
- 面试题:两个变量的最大值、最小值和变量交换
- 面试题→交换两个变量的值
- 面试题 :实现两个整数变量的交换
- 交换两个变量的值 - 经典面试题
- 交换两个变量的四种方案(面试题)
- 面试题:交换两个变量,不能声明第三个变量:
- 不用额外变量交换两个数的值
- 不占用额外空间 交换两个变量的值
- 不用额外变量交换两个整数的值
- 005不用额外变量交换两个数的值
- 不用额外变量交换两个整数的值
- 位运算---不用额外变量交换两个整数的值
- 面试题47-2:不使用新的变量,交换两个变量的值
- ADO.NET面试题之基础篇不用第三变量交换两个变量的值
- 一道面试题——不用中间变量交换两个整型变量的值
- 面试题 -- 交换两个变量的值,不借助第三方变量
- 面试题:交换两个变量的值,不使用第三个变量
- 记录库
- JS moveStart和moveEnd方法(TextRange对象--查找与选择)
- Mina的多线程模式——节选自设计文档
- 单向链表存在环的判断
- 友酷吧邮件件统计系统的亮点功能解析
- 〔面试题〕无需额外变量交换两个变量的方法
- BlackBerry上联网的五种方式
- 面向对象:类组合还是类继承?
- 各种程序语言的时间戳写法
- 超级终端使用简介
- 查找算法
- 在"问题"中前进--彩排
- 初识Activity
- spring+hibernate+flex集成成功