High Frequency
XOR ^
a^a=0 相同数异或会抵消,两两抵消
0^a = a
满足交换律和结合律 a^b = b^a a^(b^c)=(a^b)^c
(c-1)&c 去掉最后一个1
c - (c-1)&c得到最后一个1
Subarray
凡是和subarray子数组相关的问题,都要想到子数组和是俩前缀和相减(惯用套路)nums[i...j] = sum[j]-sum[i-1]
subarray sum用hashmap 存sum[i] -- target-sum[i], 但是closest不能用hash, hash只能精确相等
头尾指针比较交换: 排序,头尾指针 A[s] +A[e] 比较 target 太大就移动尾巴 太小就移动头指针 o(1)space o(logn) time
power(x,n)
x^n = (x^(n/2))^2 快速幂 ->o(logn)
在L7数组里有总结maximum subarray 和 stock buy and sell的动归总结
3sum问题:
重复的:用counter map和排列组合公式,3个if条件 1=2=3 1=2!=3 1<3 and 2<3
不重复的:排序,for loop只到i-2,每次比较i!=i-1
Last updated