LeetCode 371兩數之和

2021-09-25 10:19:23 字數 520 閱讀 2295

題目描述:

不使用運算子+-​​​​​​​,計算兩整數 ​​​​​​​ab​​​​​​​之和。

思路:既然不能使用運算子操作就要考慮到,位運算的加法。

加法有進製的時候和不進製的時候。

位運算既是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時,說...