两数之和(不使用+、- 运算符)LeetCode

题目描述:

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

示例 1:

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

示例 2:

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

解题思路:

  • a^b 是取得两数无进位相加,a & b 是取得两数相加后的进位。
  • 无进位相加与进位不断异或,直至进位为0

代码实现:

class Solution {
    public int getSum(int a, int b) {
        int sum;
        while (true) {
            sum = a ^ b;
            int flag = (a & b) << 1;
            if (flag == 0) {
                break;
            }
            a = sum;
            b = flag;
        }
        return sum;
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_43573824/article/details/89598429
今日推荐