目录结构
1.题目
写一个函数,求两个整数之和,要求在函数体内不得使用 “+”、“-”、“*”、“/” 四则运算符号。
示例:
输入: a = 1, b = 1
输出: 2
提示:
a
,b
均可能是负数或 0- 结果不会溢出 32 位整数
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/bu-yong-jia-jian-cheng-chu-zuo-jia-fa-lcof
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
2.题解
假设a(i)表示a的二进制的第i位,b(i)表示b的二进制的第i位,求和a+b:
a(i) | b(i) | 无进位和t(i) | 进位m(i) |
0 | 0 | 0 | 0 |
0 | 1 | 1 | 0 |
1 | 0 | 1 | 0 |
1 | 1 | 0 | 1 |
则有【无进位和】 同 【异或运算】,【进位】 同 【与运算 +左移一位】。
public class Offer65 {
@Test
public void test() {
System.out.println(add(25, 29));
}
public int add(int a, int b) {
while (b != 0) {
int t = (a & b) << 1;
a ^= b;
b = t;
}
return a;
}
}
- 时间复杂度:
- 空间复杂度: