需要一些幫助來理解leetcode 371的python解決方案。「兩個整數的和」。我發現https://discuss.leetcode.com/topic/49900/python-solution/2是最多投票的Python解決方案,但我有問題了解它。在python中不使用「+」運算符的兩個整數之和
- 如何理解「%MASK」的用法以及爲什麼「MASK = 0x100000000」?
- 如何理解「〜((a MIN_INT)^ MAX_INT)」?
- 當總和超過MAX_INT時,函數大聲負值(例如getSum(2147483647,2)= -2147483647),是不是不正確?
class Solution(object):
def getSum(self, a, b):
"""
:type a: int
:type b: int
:rtype: int
"""
MAX_INT = 0x7FFFFFFF
MIN_INT = 0x80000000
MASK = 0x100000000
while b:
a, b = (a^b) % MASK, ((a & b) << 1) % MASK
return a if a <= MAX_INT else ~((a % MIN_INT)^MAX_INT)
這裏有什麼規定?只能使用按位運算符和'%'? – mwm314
在按位運算符中使用'%'運算符實現加法有點荒謬。 – chepner
@ mwm314是的,這是正確的。更新了標題。 – user1269298