目錄
一、題目描述
二、解題思路
三、**實現
不使用運算子 + 和 - ,計算兩整數 a 、b 之和。
示例 1:
輸入:a = 1, b = 2輸出:3
示例 2:
輸入:a = -2, b = 3這題標籤是到簡單題,但如果不熟悉位運算,怎麼看怎麼不簡單。輸出:1
二進位制的加法就以下幾種情況,
1+1 = 0 (有進製)
1+0 = 1 (無進製)
0+0 = 0 (無進製)
0+1 = 1 (無進製)
如果不考慮進製,這個就是無進製加法操作,但是還要加上進製的資料才是真正的結果。進製資料如何得到呢?觀察上面式子,只有1+1的時候會產生進製,所以做與操作就能得到進製的資料,但是這個進製資料需要往前移位,因為進製資料是加在上一位資料的,及(a & b)<< 1;這裡還需要注意一下負數如果左移的話,符號位會溢位,所以需要轉換成無符號整數防止溢位。
可以遞迴也可以迭代,退出的條件是直到相異或的兩個數不會產生進製為止。
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時,說...