# 数学
等差数列求和:Sn=(a1+an)*n/2;Sn=n*a1+d*(n-1)*n/2
等比数列求和:Sn=a1*(1-qn)/(1-q);Sn=(a1-an*q)/(1-q)
组合数学:A(n,m)=(n!)/(n-m)!;C(n,m)=A(n,m)/m!=(n!)/((n-m)!*m!
唯一分解定理
一个大于 1 的正整数 N,如果它的标准分解式为 N=p1a1+p2a2+…+pnan,那么它的正因数为(a1+1)(a2+1)…(an+1),
其中 pi 为素数(1 不为素数)
斐波那契数公式
class Solution:
def fib(self, n: int) -> int:
sqrt5 = 5**0.5
fibN = ((1 + sqrt5) / 2) ** n - ((1 - sqrt5) / 2) ** n
return round(fibN / sqrt5)
# 做题小技巧
综合利用哈希表和前缀和可以解决连续子数组的问题。
有时候通过将问题的值进行变换,可以将问题转化为一个我们已知的问题或较为简单的问题,例如将 0 替换成 - 1,这样就可以使用通过前缀和的知识点来解决子数组中有相同 0 和 1 的问题。
子函数内使用 global 全局函数关键字
遍历的小技巧
for i, w in enumerate(servers):i表示索引,w为实际从server中取出来的值
# 常用函数
# 集合
函数 | 作用 |
---|---|
set1=set() | 创建集合 |
set1.add(6) | 增加元素 |
set1.remove(5) | 删除元素 |
# 字符串
函数 | 作用 |
---|---|
find(sub) | 检测 sub 是否存在于字符串中,有则返回索引值,无则返回 - 1 |
count(sub) | 判断 sub 在字符串中出现的次数 |
isalnum() | 如果字符串至少有一个字符并且所有的字符都是字母或数字则返回 True,否则返回 False。 |
isalpha() | 如果字符串至少有一个字符而且所有字符都是字母则返回 True,否则返回 false |
isdigit() | 如果字符串只包含数字则返回 True,否则返回 false |
join() | 以字符串为分隔符,插入到 sub 中所有的字符之间 n=“”.join (n) |
replace(old,new[,count]) | 把字符串中的 old 子字符串替换成 new 子字符串,如果 count 指定,则替换不超过 count 次 |
split(sep=None,maxsplit=-1) | 分隔字符串,默认按照空格作为分隔符切片字符串 |
splitlines() | 按照 “\n” 分隔,返回一个包含各行作为元素的列表 |
strip([chars]) | 删除字符串前边和后边的所有空格,chars 参数可以定制删除的字符 |
# 数组
函数 | 作用 |
---|---|
copy.deepcopy() | 深复制,真正的新建一个数组进行赋值,而不是传引用。使用前需要 import copy。 |
clear() | 清空列表中的元素,留下一个空列表。 |
append() | 向列表添加元素 |
extend() | 使用一个列表来拓展一个列表 |
remove(sub) | 删除 sub 元素 |
insert(num,index) | 在 index 处插入一个 num |
pop(index) | 弹出 index 处元素 |
count() | 计算出现次数 |
index() | 返回元素位置 |
reverse() | 翻转列表 |
sort() | 排序 |
# Math 库
函数 | 作用 |
---|---|
math.pow(x, y) | 返回 x 的 y 次方 |
math.ceil(x) | 返回不小于 x 的整数 |
math.fabs(x) | 返回 x 的绝对值 |
math.floor(x) | 返回不大于 x 的整数 |
math.fsum([x, y, …]) | 返回无损精度的和 |
math.sqrt(x) | 返回 x 的平方根 |
# 其他
# datatime
date.isocalendar() #返回结果是三元组(年号,第几周,第几天)
date.strftime("%j") #计算输入的日期是一年中的第几天
end=datetime.datetime(year=2020,month=10,day=1)
dela=datetime.timedelta(days=1)
if start.day==1 or start.weekday()==0:#月初或周一
# 优先队列
优先队列是按照递增进行排列的,弹出的数据是最小的元素,如果想让其递减的排列,可以在前面乘一个 - 1.
import heapq %导入库函数
heapq.heapify(nums) %将数组转化为优先队列
heapq.heappush(nums,7) %往优先队列中插入元素
num=heapq.heappop(nums) %从优先队列中取出元素
# 类的声明
class Potato:#声明类名
def __init__(self,name):#声明构造方法,self用于在类中传递各种属性
self.name=name
def kick(self):
print("我叫%s。"%self.name);