Leetcode 371. 不用+的两整数之和(与,异或,某些数字需要用两次,再=覆盖)

  1. 两整数之和
    不使用运算符 + 和 - ​​​​​​​,计算两整数 ​​​​​​​a 、b ​​​​​​​之和。
示例 1:
	输入: a = 1, b = 2
	输出: 3
示例 2:
	输入: a = -2, b = 3
	输出: 1
class Solution {
    public int getSum(int a, int b) {
        int carry = a & b;
        int sumNoCarry =  a ^ b;
        int temp1 = carry;
        while(temp1 != 0){
            carry = temp1 << 1;
            temp1 = carry & sumNoCarry;
            sumNoCarry = carry ^ sumNoCarry;
        }
        return sumNoCarry;
    }
}

总结

        carry = carry & sumNoCarry;
        sumNoCarry = carry ^ sumNoCarry;

这么写是错的,因为会把carry进位数覆盖掉,而这个数我们要用两回。


版权声明:本文为qq_39328864原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。