题目描述
剑指 Offer 65. 不用加减乘除做加法
难度简单162
写一个函数,求两个整数之和,要求在函数体内不得使用 “+”、“-”、“*”、“/” 四则运算符号。
示例:
输入: a = 1, b = 1
输出: 2
提示:
a,b均可能是负数或 0- 结果不会溢出 32 位整数
测试用例
输入整数、负数和0。
题目考点
- 考察应聘者的发散思维能力。
- 考察应聘者对二进制和位运算的理解。
解题思路
分为三步走:
- 利用位异或运算不考虑进位地加两个数
- 利用位与运算以及左移运算得到进制代表的值
- 将上面1,2的结果相加(即重复1,2运算,直到进位为0)
参考解题
class Solution {
public int add(int a, int b) {
while(b != 0) { // 当进位为 0 时跳出
int c = (a & b) << 1; // c = 进位
a ^= b; // a = 非进位和
b = c; // b = 进位
}
return a;
}
}
本文标题:剑指Offer系列(java版,详细解析)65.不用加减乘除做加法
本文链接:https://blog.quwenai.cn/post/5164.html
版权声明:本文不使用任何协议授权,您可以任何形式自由转载或使用。






还没有评论,来说两句吧...