☘前言☘
今天是九日集训第一天,我会记录一下学习内容和题解,争当课代表0.0.
注意!!!!题解的解法一是今天要掌握的解法,解法2是学有余力再研究,涉及到后面知识点0.0
链接:《LeetCode零基础指南》(第二讲) 函数
🧑🏻作者简介:一个从工业设计改行学嵌入式的年轻人
✨联系方式:2201891280(QQ)
⏳全文大约阅读时间: 20min
全文目录
☘前言☘
🎁主要知识点梳理
📝力扣的简单使用
📝函数的定义和使用
📝内置函数的使用
课后习题详解
371. 两整数之和
面试题 08.05. 递归乘法
29. 两数相除
50. Pow(x, n)
69. Sqrt(x)
面试题 16.07. 最大数值
📑写在最后
🎁主要知识点梳理
📝力扣的简单使用
图上我标注了大概的分区,箭头是我的一个做题步骤
就是先看题->观察输入输出->看提示(一定要看,数据范围决定了很多东西)->编码->测试比对结果->提交
📝函数的定义和使用
为了方便理解,我给了一张图,大家应该能看明白。但是我现在有一种思维,就是很多时候函数是叫做接口函数的,那么,为什么叫接口函数呢?
因为如果你将函数看作一个黑匣子,那么你就不需要关注函数的实现,只要给函数对应的值它就会给你返回你要的功能。是不是就像接口一样呀?
最后是函数的定义和使用 参考图很容易看出来的吧,因为c是一个强类型的语言,所以一定要有对应的类型。我用颜色标出了对应信息,是不是和黑匣子的概念很像呢?
📝内置函数的使用
上一个介绍了函数的定义方式,c语言里面给我们提供了一些内置的函数,今天又几个需要记住的函数,我给大家列出来了。
pow(x,n);// 返回x的n次方 其中x为浮点数 sqrt(x);//返回x的平方根 返回值为浮点数 fmax(a,b);//返回a b中较大的一个。
课后习题详解
371. 两整数之和
371. 两整数之和
面试题 17.01. 不用加号的加法
剑指 Offer 65. 不用加减乘除做加法
这三题是一样的所以就放在一起了
题目描述
给你两个整数 a 和 b ,不使用 运算符 + 和 - ,计算并返回两整数之和。
解题思路1
直接返回a+b就好了。
int getSum(int a, int b){ return a + b; }
解题思路2
利用位运算,有一个小知识点,就是半加器其实就是位的异或,全加器是加上了进位,进位的产生是这个位全为1。
int getSum(int a, int b){ while(b){ unsigned int temp = (unsigned int)(a & b) << 1; //防止溢出要用unsigned int a = a ^ b; b = temp; } return a; }
面试题 08.05. 递归乘法
面试题 08.05. 递归乘法
题目描述
递归乘法。 写一个递归函数,不使用 * 运算符, 实现两个正整数的相乘。可以使用加号、减号、位移,但要吝啬一些。
解题思路1
别天真,就用乘法就完事了!!
int getSum(int a, int b){ return a * b; }
解题思路2
递归乘法有点类似于快速幂的思想,就是看看最低位是否为1
如果是的话就+a
如果不是就递归调用 a *2 和 b/2。因为整数除法 会舍弃掉余数,所以会有上面的加法。
int multiply(int A, int B){ return (B & 1 ? A : 0) + ((B >> 1) > 0 ? multiply(A<<1,B>>1) : 0); //返回的其实就是首先判断末位是否为1 然后递归下一层。如果b>>1已经是0了就不需要递归了。 }