题目所属分类
位运算
原题链接
写一个函数,求两个整数之和,要求在函数体内不得使用 “+”、“-”、“*”、“/” 四则运算符号。
代码案例:输入: a = 1, b = 1
输出: 2
提示:
a, b 均可能是负数或 0
结果不会溢出 32 位整数
题解
class Solution {
public int add(int a, int b) {
// 1、两个整数做异或^,得到各位相加不进位的运算结果;
// 2、两个整数做与&,然后再左移一位,即得到进位的运算结果;
// 3、将上面两个结果相加,即重复步骤1,2,直至进位的运算结果为0;
// 时间复杂度分析:O(logN)
while(b != 0 ){
int sum = a ^ b ;
int jin = (a & b)<<1;
a = sum;
b = jin;
}
return a;
}
}