leetcode解题报告(两数之和,递归乘法)

Posted Shany-Ming

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode解题报告(两数之和,递归乘法)相关的知识,希望对你有一定的参考价值。

题目一:两整数之和

给你两个整数 a 和 b ,不使用 运算符 + 和 - ,计算并返回两整数之和。 

 

 两整数之和

 首先,在不给用加法的情况,我们可以想到位运算,既然是两个数的运算,我们可以先假设a=3,

b=5,(所假设的数字补码同一位必须都是1的情况,不然考虑不全面)然后对这两数分别进行位运算,你会发现,异位是最接近的

两位为1变0,但没进位,接下来就要考虑进位,找到都为一的位数,那么就是按位与了,将按位与的往左挪一,再按位或,这就是此题解法

int getSum(int a, int b)
int c;
while(b)

    c=(unsigned int)(a&b)<<1;
    a^=b;
    b=c;

return a;

 

 此题图解,必须定义c变量否则异或的不是上一轮b的值。

2.递归乘法

递归乘法。 写一个递归函数,不使用 * 运算符, 实现两个正整数的相乘。可以使用加号、减号、位移,但要吝啬一些。

递归乘法

 既然能使用+-号,那么就不需要位运算了(位运算太难想了),我们就用乘法的本质,一个数×几就等于几个这样的数相加

int multiply(int A, int B)
if(B>0)
return multiply(A,B-1)+A;
return 0;

以上是关于leetcode解题报告(两数之和,递归乘法)的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode1. 两数之和(C++)

万人千题12.8C语言解题报告(关于不用加法的加法的那些事)

⭐算法入门⭐《二叉树 - 二叉搜索树》简单01 —— LeetCode 653. 两数之和 IV - 输入 BST

Leetcode-探索 | 两数之和

LeetCode第5天 - 283. 移动零 | 167. 两数之和 II - 输入有序数组

LeetCode 热题100 1.两数之和 解题思路 哈希表知识点回顾(JavaScript解题 5种方法)