(self, a: int, b: int)
| 1 | class Solution: |
| 2 | def getSum(self, a: int, b: int) -> int: |
| 3 | def add(a, b): |
| 4 | if not a or not b: |
| 5 | return a or b |
| 6 | return add(a ^ b, (a & b) << 1) |
| 7 | |
| 8 | if a * b < 0: # assume a < 0, b > 0 |
| 9 | if a > 0: |
| 10 | return self.getSum(b, a) |
| 11 | if add(~a, 1) == b: # -a == b |
| 12 | return 0 |
| 13 | if add(~a, 1) < b: # -a < b |
| 14 | return add(~add(add(~a, 1), add(~b, 1)), 1) # -add(-a, -b) |
| 15 | |
| 16 | return add(a, b) # a*b >= 0 or (-a) > b > 0 |