[
math
bit manipulation
]
Leetcode 0371 Sum of Two Integers
Problem statement
https://leetcode.com/problems/sum-of-two-integers/
Solution
This problem in fact can be quite difficult, if you did not solve it before. The trick is to use bit manipulations: on each iteration taking one bit from one number and put it to another.
Complexity
Complexity is O(32)
, because we can have 32
iterations. In python however we need to deal with negative numbers, because they stored differently.
Code
class Solution:
def getSum(self, a, b):
mask = 0xffffffff
while b != 0:
a, b = (a ^ b) & mask, ((a & b) << 1) & mask
return ~(a ^ mask) if (a >> 31) & 1 else a