博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[CareerCup] 17.1 Swap Number In Place 互换位置
阅读量:6258 次
发布时间:2019-06-22

本文共 609 字,大约阅读时间需要 2 分钟。

17.1 Write a function to swap a number in place (that is, without temporary variables).

这道题让我们交换两个数,但是不能用额外空间,那么我们可以先做差值,存入a中,然后再加上b,存入b中,那么此时的b即为原来的a,因为整个相当于做了一个a - b + b的过程,那么现在b是原来的a,而a中现在保存的是差值,,那么原来的b值就可以通过b-a来得到,保存到a中即可:

解法一:

void swap(int a, int b) {    a = a - b;    b = b + a;    a = b - a;    cout << a << " " << b << endl;}

下面这种做法跟上面的方法思路相同,但是用到了异或操作符,a异或b求的实际上就是a与b的差值,然后结果再异或b得到a,这就相当于a^b^b,即a^(b^b),由于b^b为0,任何数异或0都为其本身,所以b就成了a,然后a再异或差值就得到了b,完成了交换:

解法二:

void swap(int a, int b) {    a = a ^ b;    b = a ^ b;    a = a ^ b;    cout << a << " " << b << endl;}

本文转自博客园Grandyang的博客,原文链接:,如需转载请自行联系原博主。

你可能感兴趣的文章
zoj 1008
查看>>
VC++ CArchive及简单的文件操作方法
查看>>
使用canvas制作一个移动端画板
查看>>
android中ListView数据混乱问题
查看>>
QT学习-10/31/2012
查看>>
jQuery File Upload
查看>>
bbb板运行rtems-编写led底层驱动
查看>>
如何从零安装Mysql
查看>>
Appium简介及工作原理
查看>>
IP 类型转换
查看>>
mysql实践1
查看>>
struts2 Preparable接口
查看>>
hdu4578(线段树)
查看>>
写一个脚本简单检测局域网存活的机器
查看>>
Dubbo
查看>>
angular与jquery 进行json提交数据,报文头格式不一致的解决方案
查看>>
更换笔记本内存:自己动手修电脑(一)
查看>>
POJ2262-Goldbach's Conjecture
查看>>
区分扫描枪输入和键盘输入的实现
查看>>
【ssh服务配置】
查看>>