371. Sum of Two Integers
https://leetcode.com/problems/sum-of-two-integers/
Python
- Use operator module for better understand
from operator import xor, invert, and_
class Solution:
def getSum(self, a: int, b: int) -> int:
x, y = abs(a), abs(b)
# Ensure x >= y
if x < y:
return self.getSum(b, a)
sign = 1 if a > 0 else -1
if a * b >= 0:
# a and b are possitive integers
while y:
x, y = xor(x, y), and_(x, y) << 1
else:
while y:
x, y = xor(x, y), and_(invert(x), y) << 1
return sign * x
Javascript
var getSum = function(a, b) {
while (b != 0){
const c = a & b;
a = a^b;
b = c << 1;
}
return a;
};