divide & conquer

二分aka two pointer

算左,算右,算左+右

例题 max subtree path, quicksort

quicksort basic

1
2
3
4
5
6
7
8
9
10
11
def quicksort(arr):
if not arr or len(arr)<=1: return arr
pivot = arr[0]
left = []
right = []
for q in arr[1:]:
if q<=pivot:
left.append(q)
else:
right.append(q)
return quicksort(left)+[pivot]+quicksort(right)

two pointer+string

reverse vowels - look at left look at right then swap

exponential

如果even算两个k的n/2如果odd算n-1的。。类似dp?

打乱数组

二分交换a1,a2 and b1,b2
使用random算random index然后swap