【LeetCode】Sum of Two Integers 解法【Python】
スポンサードリンク
Sum of Two Integers
加算と減算を計算する関数を作る、ただし+と-を使わずに。という問題。 これは流石にわからなかった。バイナリ演算というのは想像できるが、 実際のアルゴリズムを考える余力もなく、答えをみた。
コード
class Solution: def getSum(self, a: int, b: int) -> int: MAX_INT = 0x7FFFFFFF MIN_INT = 0x80000000 MASK = 0x100000000 while b: carry = (a & b) a = (a ^ b) % MASK b = (carry << 1) % MASK if(a <= MAX_INT): return a else: return ~((a % MIN_INT) ^ MAX_INT)
しかし、普通に+と-使って計算したときと処理速度変わらないのだが、 これを使う場面があるのだろうか。