一.常见写法
无穷大
在Python中,float(‘inf’) 是一个特殊的浮点数,用于表示无穷大的概念。当你需要表示一个非常大的数值,或者在某些算法中需要一个初始值来表示一个无限大的概念时,可以使用 float(‘inf’)。
res=(0,float('inf'))
无
if not array: return []
字符串
寻找子串
if j-i<res[1]-res[0]:
res=(i,j)
return '' if res[1]>len(s) else s[res[0]:res[1]+1]#列表的:,最后范围左闭右开。
二维列表/矩阵
nums = [[0] * n for _ in range(n)]
#若n==5
[
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0]
]
-
[0] * n:这部分生成了一个长度为 n 的列表,列表中的每个元素都是 0。
for _ in range(n):这个循环表示我们要执行 n 次操作,其中 _ 是一个惯用的变量名,用于表示循环体内不需要这个变量的实际值。这通常用于避免引入不必要的变量名。
将它们组合在一起,[[0] * n for _ in range(n)] 的含义是创建一个 n x n 的二维列表。每个元素都是一个列表,包含 n 个 0。这种形式常用于创建初始值相同的二维结构,例如矩阵或网格。
-
注意此时取数要用nums [i] [j],而非nums[i,j]
因为此时的nums是一个嵌套列表,先找第几个列表,再找其中第几个元素。
[i,j]只是在Numpy中适用
二.函数
- list.sort(reverse=True),sort是排序。
- sortedcontainers是一个有序容器库(排序容器库)。
SortedList会维持其包含的数据值为升序状态。
from sortedcontainers import SortedList
- float(‘-inf’)为负无穷
- List.append() 在列表末尾增加对象元素
- set()数组去重
- dict()字典
- enumerate
for i, num in enumerate(nums):
用enumerate写for循环,下标和元素本身都方便操作。range的话下标容易操作而元素不易操作,num in的话元素易操作而下标不容易操作。
Counter
- 集合——哈希表
Counter 是 collections 模块中的一个类,它用于统计可哈希对象(如字符串、数字、元组等)的数量。Counter 类可以方便地用来计算列表中元素的出现次数,或者比较两个列表中元素的差异。 - counter=collections.Counter()
for k,v in counter.items():
cnt=Counter()
cnt.pop(index=-1)
位运算
- ord() 函数是 chr() 函数(对于8位的ASCII字符串)或 unichr() 函数(对于Unicode对象)的配对函数,它以一个字符(长度为1的字符串)作为参数,返回对应的 ASCII 数值,或者 Unicode 数值
-
mid =(left+right+1)>>1是二分法的写法,其中>>是位运算右移一位,实现除以2。
数组总结
连续的内存空间,下标从0开始
方法
注意循环不变量的设置
- 二分法
- 双指针法
- 滑动窗口
Tips
- 注意缩进
- 注意边界条件,优先考虑输入0的处理