不使用运算符 +
和 -
,计算两整数 a
、b
之和。
示例 1:
输入: a = 1, b = 2 输出: 3
示例 2:
输入: a = -2, b = 3 输出: 1
您是否在真实的面试环节中遇到过这道题目呢?
首先不使用+ -,一定就是与二进制操作相关的。我看的是这篇文章 https://blog.csdn.net/weixin_40046203/article/details/79937790
不需要进位的时候按位与就可以了,需要进位的时候用递归的方式继续求。如果不懂,有个数学背景你应该要知道,a<b时,a+b=2a+|a-b|,比如4+6=8+2,再比如,2+10=4+8。
class Solution {
public int getSum(int a, int b) {
int result=a^b;
int fo=(a&b)<<1;
if(fo!=0){
return getSum(result,fo);
}
return result;
}
}