LeetCode里难度为简单
- 问题描述:写一个函数不用加减法将两个数相加
- 思路:开始想不用加法就用乘除,结果写到最后还是不得不用加减法。之后换了用两个补码相加思路
发现:两数之和=两数异或+两个数相与之和左移一位
方法一:(递归)
int getSum(int a, int b)
{
int sum1 = a^b;
int sum2 = (a&b) << 1;
if(sum2!=0) return getSum(sum1, sum2);
return sum1;
}
方法二:
int getSum(int a, int b) {
while(a != 0) {
int tmp = (a & b) << 1;
b = a ^ b;
a = tmp;
}
return b;
}
花费的时间上没有差异
本文介绍了一种在LeetCode中解决两数之和问题的方法,即不使用加减法运算符来实现加法操作。文章提供了两种实现方案,一种采用递归方式,另一种为循环迭代实现。通过对两数进行异或和与操作,并将结果左移一位来得到最终的和。
756

被折叠的 条评论
为什么被折叠?



