具体思想:
这里采用的思路注意两点:
1.其实相当于算完进位左移后,再次当作加数和非进位数相加,直到进位为0为止;
2.移位是注意一下,c++要求有符号负数不能随意左移,是未定义行为,因此要把该数转化为无符号数进行左移;
值得注意的是,符号在进位计算内仅作修饰,也就是正数和负数可以直接按照相同进行计算,不用太管符号位;
具体代码:
class Solution {
public:
int add(int a, int b) {
while(b!=0){
int c=(a&b);
a^=b;
b=unsigned(c)<<1;
}
return a;
}
};
最后
以上就是舒适电脑最近收集整理的关于LeetCode 剑指 Offer 65. 不用加减乘除做加法***具体思想:具体代码:的全部内容,更多相关LeetCode内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复