題目描述
寫一個函數,求兩個整數之和,要求在函數體內不得使用 “+”、“-”、“*”、“/” 四則運算符號。
思路
代碼
class Solution:
def add(self, a:int, b:int)->int:
x = 0xffffffff
a, b = a & x, b & x
while b != 0:
a, b = (a ^ b), (a & b) << 1 & x
return a if a <= 0x7fffffff else ~(a & x)
複雜度
時間複雜度 O(1) : 最差情況下(例如 a = 0x7fffffff , b = 1時),需循環 31 次,使用 O(1) 時間;每輪中的常數次位操作使用 O(1)時間。
空間複雜度 O(1): 使用常數大小的額外空間。