写点什么

《LeetCode 刷题报告》题解内容Ⅰ

作者:泽En
  • 2022 年 3 月 28 日
  • 本文字数:1239 字

    阅读完需:约 4 分钟

《LeetCode刷题报告》题解内容Ⅰ

​Hello,大家好我是泽 En,一起共同学习,多多指教(●'◡'●)

  • 🎃本章博客题目力扣链接 

  1. 剑指 Offer 65. 不用加减乘除做加法 - 力扣(LeetCode)

  2.  面试题 17.01. 不用加号的加法 - 力扣(LeetCode)

  3. 面试题 08.05. 递归乘法 - 力扣(LeetCode)

  4.  两整数之和 - 力扣(LeetCode)



⌚不用加减乘除做加法

题目:写一个函数,求两个整数之和,要求在函数体内不得使用"+"、"-"、"*"、"/" 四则运算符号。

示例:

输入: a = 1, b = 1输出: 2
复制代码


提示:

  • ab 均可能是负数或 0

  • 结果不会溢出 32 位整数


📝题解思路 1:

直接返回值 return a+b;算出两个整数之和多好😜

int add(int a, int b){    return a + b;}
复制代码


📝题解思路 2:

既然它说要求在函数体内不能使用四则运算符,那我们直接在函数体外宏定义一个不好吗?  

#define Add +
int add(int a, int b){ return a Add b;}
复制代码


📝题解思路 3: 

当然最优质的话,就是使用位运算。其实本题也就是考察你的位运算用的怎么样。

int add(int a, int b){    while(b)    {           unsigned int tep = a & b;//a与b赋值tep           a = a ^ b;      //a 异或 b 赋值给a           b = tep << 1;   //tep按位左移1位     }    return a;//当表达式b为假,也就是循环为0时候退出,返回值返回整形a的值。}
复制代码




⏰不用加号的加法

题目:设计一个函数把两个数字相加。不得使用 + 或者其他算术运算符。

示例:

输入: a = 1, b = 1输出: 2
复制代码


提示:

  • ab 均可能是负数或 0

  • 结果不会溢出 32 位整数


📝题解思路 1:

还是和上面的题型一样的都,直接参考上面的题即可。

📝题解思路 2:

题目说到不让使用 + 法或者是其他算术运算符,那我用赋值运算符总可以了吧。 

int add(int a, int b){    if(a == 0 && b==0)        return 0;    a+=b;    return a;}
复制代码




⏱两整数之和 

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

示例:

输入:a = 1, b = 2输出:3并且输入:a = 2, b = 3输出:5
复制代码


提示:

  • -1000 <= a, b <= 1000


📝题解思路

和上面两种题解思路都差不多,毕竟题型都是一种类型的。 可以自己带入算下。

int getSum(int a, int b){    while (b)     {          int c = ((unsigned int)a & b) << 1;          a = a ^ b;          b = c;    }    return a;}
复制代码




⏲递归乘法 

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

示例:

输入:A = 1, B = 10输出:10并且输入:A = 3, B = 4输出:12
复制代码


提示:

  • 保证乘法范围不会溢出

📝题解思路:

首先,题目中说到了递归我们就要知道递归的特征是什么才行。

  1. 一个函数在它的函数体内调用它自身称为递归调用,这种函数称为递归函数。

  2. 存在限制条件,当满足这个限制条件之后的时候,递归便会不再继续。

  3. 每次递归调用之后都会越来越接近这个限制条件

  • 这道题你就可以直接使用假定值给它做出来,利用递归特征。

int multiply(int A, int B){    if(B==0)        return 0;    return A+multiply(A,B-1);}
复制代码




发布于: 2022 年 03 月 28 日阅读数: 24
用户头像

泽En

关注

好像没有😅 2022.01.29 加入

CSDN嵌入式领域新星创作者、2021年度博客之星物联网与嵌入式开发TOP5、2022博客之星TOP100 掘金创作者

评论

发布
暂无评论
《LeetCode刷题报告》题解内容Ⅰ_3月月更_泽En_InfoQ写作平台