`
happmaoo
  • 浏览: 4338142 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

另一道看上去很吓人的面试题:如何交换a和b两个整数的值,不用额外空间 (Rev. 2)

阅读更多
<iframe align="top" marginwidth="0" marginheight="0" src="http://www.zealware.com/46860.html" frameborder="0" width="468" scrolling="no" height="60"></iframe>
这个题貌似完全颠覆一般的Logic:交换两个整数需要一个额外的空间用于保存:
t = b;
b = a;
a= t;
粗看上去似乎没有办法,但是仔细想一下,既然不能用额外的空间,那么能用的方法就只有数学方法,也许有效,那么第一个想法就是用A+b看看,稍微想一下就可以得到下面这个解法:
a = a + b;
b = a - b;
a = a - b;
还有更绝的(由DxZ网友提供):
a = a ^ b;
b = a ^ b;
a = a ^ b;
其实很多这样的题目并不难,只是需要一点点的Think outside the box :)


Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1589626


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics