[2016/12/5]不用第三个变量交换两个数字
2016-12-05 10:54
323 查看
记得以前看到过这个方法,不过一直没记住。今天做题的时候突然要用交换两个变量。所以就想用这种方法啦!
题目很简单,就是求斐波那契数列和。
代码如下:
就是利用集合的概念啦。
利用了异或的性质:
1.任意一个变量X与其自身进行异或运算,结果为0,即X^X=0
2.任意一个变量X与0进行异或运算,结果不变,即X^0=X
3.异或运算具有可结合性,即a^b^c=(a^b)^c=a^(b^c)
4.异或运算具有可交换性,即a^b=b^a
题目很简单,就是求斐波那契数列和。
代码如下:
int climbStairs(int n) { if(n == 1) return 1; if(n == 2) return 2; int a = 1; int b = 2; for(int i = 3;i<=n;i++){ //这个循环的目的是不用第三个变量,求出第i项的值,并更新下一步所用到的i-1,i-2项的值。用的是下面的方法一 a = a+b; b = a+b; a = b - a; b = b - a; } return b; }
方法一.直接加减
int a=1; int b=2; a=a+b; b=a-b; a=a-b;
就是利用集合的概念啦。
方法二.异或
int a=1; int b=2; a=a^b; b=a^b; a=a^b;
利用了异或的性质:
1.任意一个变量X与其自身进行异或运算,结果为0,即X^X=0
2.任意一个变量X与0进行异或运算,结果不变,即X^0=X
3.异或运算具有可结合性,即a^b^c=(a^b)^c=a^(b^c)
4.异或运算具有可交换性,即a^b=b^a
相关文章推荐
- 两个变量交换数字 不用第三个变量的情况下 int a = 5,b = 6
- 不用第三个变量交换两个变量的值
- 不用第三个变量,直接交换两个变量的值
- 不用第三个变量交换两个变量的值
- 不用第三个变量,交换两个int数
- 由“不用第三个变量,直接交换两个…
- 不用第三个变量,直接交换两个变量的值
- 不用第三个变量交换两个变量
- 不用第三个变量,交换两个变量的值
- 不用第三个变量就能交换两个变量值的五个方法
- 不用第三个变量交换两个变量的值
- 不用第三个变量,交换两个变量的值三种方案详解
- PHP中不用第三个变量交换两个变量的值
- 不用第三个变量,直接交换两个变量的值
- php 不用第三个变量交换两个变量的值
- 不用第三个变量就能交换两个变量值的五个方法
- Java里不用第三变量完成两个数字的交换
- 用异或运算符实现不用第三个临时变量交换两个变量的值
- 不用第三个变量就能交换两个变量值的五个方法
- 不用第三个变量及其他函数等交换两个变量的值