另一道看上去很嚇人的面試題:如何交換a和b兩個整數的值,不用額外空間 (Rev. 2)

ATField發表於2007-04-28
 
這個題貌似完全顛覆一般的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 :)
 

相關文章