LeetCode每日一题:两整数之和(No.371)

743 阅读1分钟

题目:两整数之和


不使用运算符 + 和 - ,计算两整数a 、b之和。

示例:


输入: a = 1, b = 2
输出: 3

输入: a = -2, b = 3
输出: 1

思考:


先将a、b异或。异或运算相同为0,不同为1。相当于不进位加法。
再将a与b相与后左移一位,与运算有0则为0,在左移一位,相当于进位。
结果不为0,继续重复操作。

实现:


 class Solution {
    public int getSum(int a, int b) {
    while(b != 0){
        int sum = a ^ b;
        int temp = (a & b) << 1;
        a = sum;
        b = temp;
    }
    return a;
}
}