【个人笔记】英雄哥-leetcode零基础指南-第二讲-函数(python)

本人之前主要用到的都是python,但是由于懒得要死lc一道题都没做过导致笔试被乱杀,所以过来强制让自己学点东西,如有任何问题请指出,不吝赐教!

Day 1 第二讲 函数

在这里插入图片描述

函数结构

在C中的数据结构

返回类型 函数名 (参数列表)
{
	函数主体
	return 返回值;
}
# 此为伪代码,且为中文符号。

函数

  1. 整数乘法
# C++
int multiply(int A, int B){
	return A * B;
}
  1. 整数除法
# C++
int divide (int A, int B){
	# 防止溢出,以及假设环境只能存储32位有符号整数
	if ( A == -2147483648 && B == -1) {
			return 2147483648;
			}
	return A / B;
}
  1. 次幂函数
    实现一个函数,给定x和n,求x^n
# double在C/C++中代表了双精度浮点数,即小数
double myPow(double x, int n){
	return pow(x,n);
}
  1. 开方函数
    实现一个函数,给定一个非负整数x,计算并返回x的算数平方根(舍去小数部分)
int mySqrt(int x){
	# return后的int代表强制转换sqrt的结果,类似python中int(x)这种
	return (int)sqrt(x);
}
  1. 最值函数
    实现一个函数,找出俩数字a,b中最大的那个。不允许使用if-else和其他比较运算符
    • ?和: 属于整体,不可以分割
    • 表达式1?表达式2:表达式3
    • 代表了如果1是真的,那输出2,如果1是假的,则输出3
    • 比如当前题目,a>b吗?如果a>b,输出a,如果a<=b,输出b
int maximum(int a, int b){
	return a > b ? a : b;
}
# 学习链接 https://blog.csdn.net/WhereIsHeroFrom/article/details/118925743

课后题目

  1. LC 371 两整数值和
    偷鸡方法。根据lc只考虑输出结果这一大前提,其实写个a+b他也不会管。
    当然之后肯定要去看看正攻是个啥解法
    在这里插入图片描述
    在此引用个大佬的正攻位运算解法链接:https://blog.csdn.net/C_Ryson/article/details/121802625?spm=1001.2014.3001.5501
  2. LC 面试题 17.01. 不用加号的加法
    也是个偷鸡方法。。
    在这里插入图片描述
  3. LC 剑指Offer 65 不用加减乘除做加法
    在这里插入图片描述
  4. 面试题 08.05. 递归乘法
    在这里插入图片描述
  5. LC 29 两数相除
    这题在考虑溢出状况,出现了多次错误
    在这里插入图片描述
    最开始的想法是这样的↓
class Solution {
public:
    int divide(int dividend, int divisor) {
        if ( dividend == -2147483648 & divisor == -1){
            return -2147483648;
            }
        return (int)(dividend/divisor);

        }
};

发现报错提示implicit conversion from ‘long’ to ‘int’ changes value
经过查询后发现是return的int值超出了int型的范围,在仔细审题和事后预期结果的时候,发现预期结果尾数为7,而非8。在更改成如下图所示代码后成果运行(虽然但是还是偷鸡做法哈哈哈)
在这里插入图片描述
6. LC 50.Pow(x, n)
就是这么直接
在这里插入图片描述
7. LC 69.Sqrt(x)
在这里插入图片描述
8. 面试题 16.07. 最大数值
在这里插入图片描述

个人遇到的一些问题及解决方法

  1. 要考虑溢出可能,类比到数值运算的可能性,比如被除数是0,比如输出结果一定要非负整数等

第一日小结

  1. 不要试图python c++同时搞。自己会乱掉
  2. 今天学习时间大概是70分钟,感觉有点慢,还是要提升效率
  3. 排版好乱 代码里上面写注释中间查注释下面写注视。。。
  4. 我怎么这么菜.jpg
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值