題目描述:
不使用運算子+
和-
,計算兩整數 a
、b
之和。
思路:既然不能使用運算子操作就要考慮到,位運算的加法。
加法有進製的時候和不進製的時候。
位運算既是0 和 1,
0+0=0;0+1=1;1+0=1;1+1=0(需要進製);
這不就是 異或操作嘛,相同為0,不同為1 例如:5+4
+0100
=1001(9)
這時,我們發現異或只能判斷到最高位以下,我們需要獲取到進製的數的位置,當遇到兩個1就進製,所以進行 「與」 運算,再左移1位就是進製。當遇到最高位是 0 時,就可以直接返回,(這時已經不用再進製了)
**如下:
public int getsum(int a,int b)
return a;
}
LeetCode371 兩整數之和
不使用運算子 和 計算兩整數a b之和。示例 若 a 1 b 2,返回 3。calculate the sum of two integers a and b,but you are not allowed to use the operator and example given a 1 and ...
Leetcode 371 兩整數之和
不使用運算子 和 計算兩整數 a b 之和。示例 1 輸入 a 1,b 2 輸出 3 示例 2 輸入 a 2,b 3 輸出 1 class solution return res 極端情況比較能說明問題 a 0111 1111 b 0000 0001 a b 0111 1110 a b 1 0000...
LeetCode 371 兩整數之和
不使用運算子 和 計算兩整數 a b 之和。示例 1 輸入 a 1,b 2輸出 3示例 2 輸入 a 2,b 3輸出 1先把a和b按位 與 再左移一位就得到了進製的結果,把該結果記為carry。然後把a和b異或,得到的是不算進製的加法結果,然後把該結果賦給a,把carry賦給b,判斷當b大於0時,說...