不用額外變數交換兩個整數的值
不用額外變數交換兩個整數的值。
輸入描述:
輸入一行,包含兩個整數n和m(−1
09≤n
,m≤1
09
)(-10^9 \leq n,m \leq 10^9)
(−109≤
n,m≤
109)
。輸出描述:
輸出交換後的n和m的值。
示例1輸入
2 3
輸出3 2
備註:
時間複雜度o(1
)o(1)
o(1)
,額外空間複雜度o(1
)o(1)
o(1)
。三行**:
假設 a 與 b 異或的結果為 c ,c 就是 a 整數字資訊和 b 整數字資訊的所有不同資訊。
在執行完第一行**後, a 變成了 c ,b 不變;執行完第二行**後, a 仍是 c ,而 b 變成了 a;執行完第三行**, a 變成了 b ,而 b 仍是 a 。
**:
#include
using
namespace std;
intmain
(void
)
不用額外變數交換兩個整數的值
題目 如何不用任何額外變數交換兩個整數的值 基本思路 如果給定整數a和b使用如下三行 即可交換a和b的值 a a b b a b a a b 如何理解這三行 的具體功能呢?首先要理解關於異或運算的特點 假設a異或b的結果為c,c就是a整數字資訊和b整數字資訊的所有不同的資訊。比如 a 4 100,b...
不用臨時變數,交換兩個變數的值
在學習c語言的時候,涉及到兩個變數值的交換,其中用到臨時變數。類似於 temp a a b b temp 這樣的語句,如果在沒有臨時變數的情況下,該如何做呢?網路上的人們給出了兩種方法 一 異或法 a a b b b a a a b 二 加減法 a a b b a b a a b 其實我們看加減法更...
不用引入第三變數交換兩個變數的值
前幾天發現了乙個問題 有人告訴我,要進行變數交換,就必須引入第三變數!假設我們要交換a和b變數的值,如果寫成 int a 5,b 10 a b b a 那麼結果就是兩個都是10,理由不言而喻。所以就應該引入第三變數,在a的值被覆蓋之前就把a的值保留好。int a 5,b 10,tmp tmp a a...