LeetCode-371-两整数之和
题目描述
不使用运算符 + 和 - ,计算两整数 a 、b 之和。
示例 1:
输入: a = 1, b = 2
输出: 3
示例 2:
输入: a = -2, b = 3
输出: 1
解法
- 无进位加法使用异或运算计算得出
- 进位结果使用与运算和移位运算计算得出
- 循环此过程,直到进位为 0
非递归写法
public int missingNumber(int[] nums) {
int res = nums.length;
for(int i = 0; i < nums.length; i++) {
res = res ^ i ^ nums[i];
}
return res;
}
运行结果:
递归写法:
public int getSum(int a, int b) {
return b == 0 ? a : getSum(a ^ b, (a & b) << 1);
}
运行结果:
标题:LeetCode-371-两整数之和
作者:guobing
地址:http://www.guobingwei.tech/articles/2020/11/02/1604276983746.html