【算法或技巧】两数交换--不用第三个数

【前言】

某日,去面试的时候遇到面试题,

交换a及b,不用第三个数,欸,当时没想到,也不知道这种经典面试题答案,现在查一下记录一下:

方法一:

a=a+b;

b=a-b;

a=a-b;


方法二:

a=a^b;

b=a^b;

a=a^b;


方法二是异或运算,请记住异或运算的规则----搞数学的就是按照各种规则各种公式再推各种规则。

1. a ^ a = 0
2. a ^ b = b ^ a
3. a ^ b ^ c = a ^ (b ^ c) = (a ^ b) ^ c;
4. d = a ^ b ^ c 可以推出 a = d ^ b ^ c.
5. a ^ b ^ a = b.

这种问题,用运算的时间换取内存空间,适用场景在哪里?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值