常用技巧

一句话知识点

  1. 检查数字是否在哈希集(如HashSet)中需要 O(1) 的时间,而对于其他数据结构,则需要 O(n) 的时间
  2. python divmod() 函数把除数和余数运算结果结合起来,返回一个包含商和余数的元组(a // b, a % b)
     >>divmod(7, 2)
     (3, 1)
    
  3. python 数组的 insert 方法可以指定位置插入数据,且元数据后移一位,在java中 listArray.add 同样的功能
  4. python 循环 range(start, stop[, step])
  5. python 倒叙 a[::-1]

细节知识点

左右移动运算符

<< : 左移运算符,num << 1,相当于num乘以2
>> : 右移运算符,num >> 1,相当于num除以2
>>> : 无符号右移运算符,num >>> 1,相当于num除以2,忽略符号位,空位都以0补齐

python

tertools.permutations(list)这个库。。自动返回列表的全排列啊

循环

range(start, stop[, step])
start: 计数从 start 开始。默认是从 0 开始。例如range(5)等价于range(0, 5);
stop: 计数到 stop 结束,但不包括 stop。例如:range(0, 5) 是[0, 1, 2, 3, 4]没有5
step:步长,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1)

小根堆

Queue<Integer> pq = new PriorityQueue<>((v1, v2) -> v2 - v1);

zip()

zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。
如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符,可以将元组解压为列表。

divmod()

Python divmod() 函数接收两个数字类型(非复数)参数,返回一个包含商和余数的元组(a // b, a % b)。

最大数 最小数

float("inf") 最大浮点数  对应 Integer.MAX_VALUE
float("-inf") 最小浮点数 对应 Integer.MIN_VALUE

队列 堆

stack 栈是Vector的一个子类,它实现了一个标准的 后进先出 的栈。
queue 先进先出
PriorityQueue 优先队列 (最大的先出)

给二维数组排序

StringBuffer

StringBuffer.reverse() 参数反转

collections.defaultdict(int)

tree_dict = collections.defaultdict(int)  生成默认的字典 相当于 java中的 Map.getOrDefault(key,0)
通过 tree_dict.items() 遍历出字典中的key 和 value

python中取摸 和需要注意 和java不一样

python 中 -1%10 = 9  , -1//10=-1
java   中 -1%10 = 1  , -1//10=0

判断是否为数字

Character.isDigit(char ch)

python 判断数组中元素是否相等

len(set(nums)) == 1

python 两个数组的交集

set(strs) & set(strs)