【解题报告】《LeetCode零基础指南》(第二讲) 函数(1)

简介: 【解题报告】《LeetCode零基础指南》(第二讲) 函数(1)

☘前言☘

今天是九日集训第一天,我会记录一下学习内容和题解,争当课代表0.0.

注意!!!!题解的解法一是今天要掌握的解法,解法2是学有余力再研究,涉及到后面知识点0.0

链接:《LeetCode零基础指南》(第二讲) 函数


🧑🏻作者简介:一个从工业设计改行学嵌入式的年轻人

✨联系方式:2201891280(QQ)

⏳全文大约阅读时间: 20min


全文目录

 ☘前言☘

 🎁主要知识点梳理

           📝力扣的简单使用

           📝函数的定义和使用

           📝内置函数的使用

 课后习题详解

           371. 两整数之和

           面试题 08.05. 递归乘法

           29. 两数相除

           50. Pow(x, n)

           69. Sqrt(x)

           面试题 16.07. 最大数值

 📑写在最后

🎁主要知识点梳理

📝力扣的简单使用

图上我标注了大概的分区,箭头是我的一个做题步骤

就是先看题->观察输入输出->看提示(一定要看,数据范围决定了很多东西)->编码->测试比对结果->提交

8508f12cc65e71838446aecf6c0664a.png



📝函数的定义和使用

为了方便理解,我给了一张图,大家应该能看明白。但是我现在有一种思维,就是很多时候函数是叫做接口函数的,那么,为什么叫接口函数呢?

因为如果你将函数看作一个黑匣子,那么你就不需要关注函数的实现,只要给函数对应的值它就会给你返回你要的功能。是不是就像接口一样呀?

972208a3c3a9eac0e7855bf0e56d0f8.png



最后是函数的定义和使用 参考图很容易看出来的吧,因为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了就不需要递归了。
}


相关文章
|
5天前
|
C语言
详解Leetcode中关于malloc模拟开辟二维数组问题,涉及二维数组的题目所给函数中的各个参数的解读
详解Leetcode中关于malloc模拟开辟二维数组问题,涉及二维数组的题目所给函数中的各个参数的解读
6 1
|
2月前
|
Go
golang力扣leetcode 396.旋转函数
golang力扣leetcode 396.旋转函数
28 1
|
7月前
|
存储
LeetCode155|剑指 Offer 30. 包含 min 函数的栈
调用 min、push 及 pop 的时间复杂度都是 O(1) 因此实现一个能够得到栈的最小元素的 min 函数,我们就不能使用for等循环去查找,直接去排序大可不必,所以我们可以通过创建另一个栈,专门去存储每次比较的最小值。
23 0
|
算法
一个函数解决【LeetCode 买卖股票的最佳时机】系列所有题目!
一个函数解决【LeetCode 买卖股票的最佳时机】系列所有题目!
|
算法 C++
模拟实现atoi函数(将数字字符串转换为整型)附加leetcode练习题
各位朋友们,大家好啊!今天我为大家分享的知识是如何模拟实现atoi函数。相信大家如果能够理解这个知识,对大家以后的刷题是有帮助的。
|
存储
图解LeetCode——剑指 Offer 30. 包含min函数的栈
图解LeetCode——剑指 Offer 30. 包含min函数的栈
65 0
【学习报告】LeetCode零基础指南 (第二讲)函数
【学习报告】LeetCode零基础指南 (第二讲)函数
|
测试技术
LeetCode——396. 旋转函数
LeetCode——396. 旋转函数
66 0
LeetCode——396. 旋转函数
|
算法 测试技术
LeetCode每日一题(7)——旋转函数
旋转函数 1.题目 2.示例 3.思路 4.代码 5.复杂度分析
109 0
LeetCode每日一题(7)——旋转函数
|
算法
leetcode-每日一题636. 函数的独占时间(模拟栈)
如果是start,我们需要判断上一个函数是否已经end执行完成,若没有则让上一个函数进入睡眠状态,等到后面end的时候进行唤醒,也就是把上一个函数的开始时间修改成当前函数的开始时间,再把当前函数的编号和开始时间添加到堆栈顶部,如果已经完成了,则把当前的函数编号和开始时间放入堆栈顶部
83 0
leetcode-每日一题636. 函数的独占时间(模拟栈)