LeetCode 刷题笔记 - 数学篇


第一次写笔记,持续更新中。。。

知识点1:遍历数字

方法一:转化成String遍历
方法二:每次除以10取余数 (x % 10)

相关题目:
#728. 自除数
#1281. 整数的各位积和之差
#1323. 6 和 9 组成的最大数字

知识点2:数字/进制转换

2进制

二进制转十进制

int(x,2)

十进制转二进制

bin(x)

10进制

#1009. 十进制整数的反码

26进制

#171. Excel表列序号

其他

罗马数字

#13. 罗马数字转整数 (通过字典转换)

拆分为多个数

#1317. 将整数转换为两个无零整数的和
当正确情况比错误情况多的多时,用随机法生成是一个好方法

知识点3:归纳法

#1025. 除数博弈:偶数先手赢,奇数先手输
#258. 各位相加

return (num - 1) % 9 + 1

知识点4:数列

等差数列求和

#268. 缺失数字
#1103. 分糖果 II

杨辉三角

题目链接: #118. 杨辉三角
题目链接: #119. 杨辉三角 II

一般来说可以使用动态规划去计算杨辉三角某一行的值,当然,也可以直接用杨慧三角的公式来计算

获取杨辉三角的指定行
直接使用组合公式C(n,i) = n!/(i!*(n-i)!)
则第(i+1)项是第i项的倍数=(n-i)/(i+1);

知识点5:几何

平面几何

三角形

三角形面积计算:

  1. 海伦公式
p = (a + b + c) / 2
S = sqrt(p * (p - a) * (p - b) * (p - c))
  1. 鞋带公式
    鞋带公式计算公式解析

#976. 三角形的最大周长

立体几何

#883. 三维形体投影面积 (题目不太严谨)
#892. 三维形体的表面积
这题我的第一反应是三视图面积相加x2,但是发现答案并不对,原因是这个方法漏了中间凹进去的部分的表面积

知识点6: 快慢指针

  1. 循环问题使用快慢指针可以解决,只要有相遇说明就有循环
    #202. 快乐数

知识点7: 异或

#231. 2的幂
#268. 缺失数字

知识点8: 最大数字限制

在验证一个数字是不是某个数字的幂是,可以先求出int范围内该数字幂的最大值,然后直接判断能否被最大数整除
#231. 2的幂
#326. 3的幂

知识点9:大数求余

首先需要知道大数越界这一个概念,当指数增长时,结果会几何倍数增长,有可能会超过 int32 或者 int64 的取值范围,结果会返回错误,就无法对某个数求余,所以接下来的方法就是如何解决大数求余(该问题不需要在python中考虑)。

方法1: 循环求余法

# 求 (x^a) % p —— 循环求余法
def remainder(x, a, p):
    rem = 1
    for _ in range(a):
        rem = (rem * x) % p
    return rem

作者:jyd
链接:https://leetcode-cn.com/problems/jian-sheng-zi-ii-lcof/solution/mian-shi-ti-14-ii-jian-sheng-zi-iitan-xin-er-fen-f/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

方法2:快速幂求余

# 求 (x^a) % p —— 快速幂求余
def remainder(x, a, p):
    rem = 1
    while a > 0:
        if a % 2: rem = (rem * x) % p
        x = x ** 2 % p
        a //= 2
    return rem

作者:jyd
链接:https://leetcode-cn.com/problems/jian-sheng-zi-ii-lcof/solution/mian-shi-ti-14-ii-jian-sheng-zi-iitan-xin-er-fen-f/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

相关题目

题目链接: 面试题14- II. 剪绳子 II.

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值