劍指offer面試題65. 不用加減乘除做加法(位運算)

題目描述

寫一個函數,求兩個整數之和,要求在函數體內不得使用 “+”、“-”、“*”、“/” 四則運算符號。
在這裏插入圖片描述

思路

詳見鏈接

代碼

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): 使用常數大小的額外空間。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章