Skip to content

Latest commit

 

History

History
86 lines (67 loc) · 1.56 KB

File metadata and controls

86 lines (67 loc) · 1.56 KB

中文文档

Description

Given two integers a and b, return the sum of the two integers without using the operators + and -.

 

Example 1:

Input: a = 1, b = 2
Output: 3

Example 2:

Input: a = 2, b = 3
Output: 5

 

Constraints:

  • -1000 <= a, b <= 1000

Solutions

Python3

class Solution:
    def getSum(self, a: int, b: int) -> int:
        a, b = a & 0xffffffff, b & 0xffffffff
        while b:
            carry = ((a & b) << 1) & 0xffffffff
            a, b = a ^ b, carry
        return a if a < 0x80000000 else ~(a ^ 0xffffffff)

Java

class Solution {
    public int getSum(int a, int b) {
        return b == 0 ? a : getSum(a ^ b, (a & b) << 1);
    }
}

C++

class Solution {
public:
    int getSum(int a, int b) {
        while (b)
        {
            unsigned int carry = (unsigned int)(a & b) << 1;
            a = a ^ b;
            b = carry;
        }
        return a;
    }
};

Go

func getSum(a int, b int) int {
	for b != 0 {
		s := a ^ b
		b = (a & b) << 1
		a = s
	}
	return a
}

...