[学习报告]《LeetCode零基础指南》(第一讲) 函数

一、今日知识点总结

函数

1 是什么:完成某项功能
2 特点:
  1. 分解:大的计算任务分解成若干小任务
  2. 调用:代码复用、减少维护成本
  3. 短小精悍:俄罗斯套娃尽可能多套(尽量由小函数组成)
3 基本结构

image-20220314174528536

4 函数实现:
4.1 整数乘法
int multiply(int a, int b){
  	return a * b;
}
4.2 整数除法
int divide(int a, int b){
  	if(a == -2147483648 && b== -1){ //(1)
    		return 2147483647;
  	}
  	return a / b;
}

注意点 - 溢出情况:

当我们的环境只能存储32位有符号整数。其取值范围就是[ -231 , 231 -1]

只有当 a = -231 且 b = -1 时,除法结果为 231,发生溢出

4.3 次幂函数
double myPow(double x,int n){
  	return pow(x,n);
}

水过去:c语言的求次幂函数api pow(x,n)

4.4 开方函数
int mySqrt(int x){
  	return (int)sqrt(x);
}

水过去:C语言取平方根的函数sqrt()

4.5 最值函数
int maximun(int a,int b){
		return a > b ? a : b;
}

知识点:三目运算符

5 重点知识点:
  1. 坚持9天能成为合伙人走上人生癫疯
  2. 会的人都会,不会的人还是不会,这个世界不缺你一个会写算法的人
  3. 做人最重要的是三连

二、今日解题

1 - 加法

371. 两整数之和

面试题 17.01. 不用加号的加法

剑指 Offer 65. 不用加减乘除做加法

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zJ0Wt60j-1647357241095)(https://img-community.csdnimg.cn/images/453724e52a07439482730d6018a2f8e5.png “#left”)]

int getSum(int a, int b){
    return a + b;
}

解题思路:

水过去的,当练习上手LeetCode了,加入重刷列表,后期采用**位运算**解题

2 - 面试题 08.05. 递归乘法

image-20220314183842848

解题思路 1

水过去

int multiply(int A, int B){
    return A * B;
}

解题思路 2

循环相加

int multiply(int A, int B){
   int ans = 0;
   for(int i = 0;i<B;i++){
       ans += A;
   }
   return ans;
}
3 - 29. 两数相除

image-20220314185639876

int divide(int dividend, int divisor){

    if(dividend == -pow(2,31) && divisor == -1){ //(1)
        return pow(2,31)-1;
    }
    int ans = dividend / divisor;
    return ans;
}

解题思路

题目要求不使用除法,今天先水过去,主要是关注溢出问题(1)

4 - 50. Pow(x, n)

image-20220314190240559

double myPow(double x, int n){
    return pow(x,n);
}
5 - 69. x 的平方根

image-20220314190432800

int mySqrt(int x){
    return (int)sqrt(x);
}
6 - 面试题 16.07. 最大数值

image-20220314190549734

int maximum(int a, int b){
    return a > b ? a : b;
}

解题思路

三目运算符

7 - 2119. 反转两次的数字

image-20220314191137117

bool isSameAfterReversals(int num){
    if(num == 0){
        return true;
    }
    if(num % 10 ==0){
        return false;
    }else{
        return true;
    }
}

解题思路

当个位是0的时候,翻转两次会不相等,只需要对10取模,看下个位数是否为0即可

三、今日收获

  1. 平常很少考虑范围和溢出问题,可能是使用Java的问题?日常的需求好像不需要关注值得范围是否超出32位等
  2. C语言没怎么用过,通过这次训练可以捡一捡C语言的知识
  3. 知道要刷算法知道要刷力扣,但一直没行动,借本次训练营,让我真的下手了,感谢英雄哥
  4. 大部分题目都没有按照题目要求水过去了,日后了解更多解题招数后,再回来面对今天看似简单的题目吧

四、今日疑问

暂无

五、其他参考

暂无

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

忘词木头人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值