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:几何
平面几何
三角形
三角形面积计算:
- 海伦公式
p = (a + b + c) / 2
S = sqrt(p * (p - a) * (p - b) * (p - c))
- 鞋带公式
鞋带公式计算公式解析
#976. 三角形的最大周长
立体几何
#883. 三维形体投影面积 (题目不太严谨)
#892. 三维形体的表面积
这题我的第一反应是三视图面积相加x2,但是发现答案并不对,原因是这个方法漏了中间凹进去的部分的表面积
知识点6: 快慢指针
- 循环问题使用快慢指针可以解决,只要有相遇说明就有循环
#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.