LeetCode 371 兩整數之和

2021-09-20 03:35:54 字數 873 閱讀 4188

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

示例 1:

輸入:a = 1, b = 2輸出:3
示例 2:

輸入:a = -2, b = 3輸出:1
解題思路:一,兩整數之和可以表示為進製數與不進製和的和。進製數可以使用兩者按位與且左移一位表示;不進製和可以使用兩者按位異或表示。二,python對於負數的處理需要手動模擬32int。

python3**如下:

class solution(object):

def getsum(self, a, b):

""":type a: int

:type b: int

:rtype: int

"""mask = 0xffffffff

min = 0x80000000

max = 0x7fffffff

while b != 0:

a,b = (a^b)&mask,((a&b)<<1)&mask

# 當a > max時,a為負數。其絕對值表示為a按位取反再加1。即-(a^mask+1)

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時,說...