【解题报告】《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模拟开辟二维数组问题,涉及二维数组的题目所给函数中的各个参数的解读
34 1
|
机器学习/深度学习
LeetCode-2055 蜡烛之间的盘子 及库函数 lower_bound 和 upper_bound学习使用
LeetCode-2055 蜡烛之间的盘子 及库函数 lower_bound 和 upper_bound学习使用
|
6月前
|
Go
golang力扣leetcode 396.旋转函数
golang力扣leetcode 396.旋转函数
45 1
|
6月前
|
存储
leetcode-636:函数的独占时间
leetcode-636:函数的独占时间
33 0
|
11月前
|
存储
LeetCode155|剑指 Offer 30. 包含 min 函数的栈
调用 min、push 及 pop 的时间复杂度都是 O(1) 因此实现一个能够得到栈的最小元素的 min 函数,我们就不能使用for等循环去查找,直接去排序大可不必,所以我们可以通过创建另一个栈,专门去存储每次比较的最小值。
30 0
|
测试技术
LeetCode-396 选转函数
LeetCode-396 选转函数
【leetcode】【27、移除元素】双指针和STL库函数求解
【leetcode】【27、移除元素】双指针和STL库函数求解
|
算法
一个函数解决【LeetCode 买卖股票的最佳时机】系列所有题目!
一个函数解决【LeetCode 买卖股票的最佳时机】系列所有题目!
105 0
|
算法 C++
模拟实现atoi函数(将数字字符串转换为整型)附加leetcode练习题
各位朋友们,大家好啊!今天我为大家分享的知识是如何模拟实现atoi函数。相信大家如果能够理解这个知识,对大家以后的刷题是有帮助的。
|
存储
图解LeetCode——剑指 Offer 30. 包含min函数的栈
图解LeetCode——剑指 Offer 30. 包含min函数的栈
79 0