Skip to content

Commit ae135d1

Browse files
committed
solve: sumOfTwoIntegers
1 parent b3c4afb commit ae135d1

File tree

1 file changed

+22
-0
lines changed

1 file changed

+22
-0
lines changed

sum-of-two-integers/yolophg.py

+22
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
# Time Complexity: O(1) - fixed 32-bit operations, at most 32 iterations
2+
# Space Complexity: O(1) - only uses a few integer variables
3+
4+
class Solution:
5+
def getSum(self, a: int, b: int) -> int:
6+
# 32-bit mask to keep numbers within range
7+
mask = 0xFFFFFFFF
8+
# max value for a signed 32-bit integer (2^31 - 1)
9+
MAX = 0x7FFFFFFF
10+
11+
# keep going until there's no carry left
12+
while b != 0:
13+
# carry is AND operation, then shift left
14+
carry = (a & b) << 1
15+
# XOR does the addition, keep it within 32 bits
16+
a = (a ^ b) & mask
17+
# carry becomes the new b (loop continues if carry exists)
18+
b = carry & mask
19+
20+
# if a is greater than MAX, it's actually a negative number in 32-bit terms
21+
# convert it to proper negative representation
22+
return a if a <= MAX else ~(a ^ mask)

0 commit comments

Comments
 (0)