遙かなるマチョジニア

マッチョXエンジニアを目指すブログ

【LeetCode】Sum of Two Integers 解法【Python】

スポンサードリンク

Sum of Two Integers

leetcode.com

加算と減算を計算する関数を作る、ただし+と-を使わずに。という問題。 これは流石にわからなかった。バイナリ演算というのは想像できるが、 実際のアルゴリズムを考える余力もなく、答えをみた。

コード

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) 

しかし、普通に+と-使って計算したときと処理速度変わらないのだが、 これを使う場面があるのだろうか。 f:id:shuheilocale:20200612073349p:plain