leetcode review (1)(Algorithm)

Binary Search
如果用二分查找时,数组中有重复数字导致两边判断条件一样可以加额外条件打破这种状况
[81] Search in Rotated Sorted Array II
[154] Find Minimum in Rotated Sorted Array II

1
2
//tip: 二维数组排序
Arrays.sort(array,(a,b)->(a[1] - b[1]));

DP
[368] Largest Divisible Subset
如果一开始不满足dp的条件可以先预处理一下,比如排个序啥的【这里有%,排序好算】
记录路径:可以额外用一个数组,每个记录前一个or后一个的位置

[397] Integer Replacement
1.如果用dp要节约空间:如果不一定要用到所有结果可以用递归,递归可以用个map把结果存起来防止stack over flow
2.bit manipulation

//count num of one in n
Integer.bitCount(n);

背包问题
[879]

最长公共子序列输出结果
用回溯的方法可以输出所有最长公共子序列

Greedy
[646] Maximum Length of Pair Chain
排个序然后每次符合条件的取2nd最小的

离散化
[850] Rectangle Area II 计算n个长方形覆盖面积
1.统计不同的x和y值,由此将可能需要计算的面积切分成小矩形
2.遍历每个长方形,被长方形覆盖的小矩形标记一下
3.遍历一遍所有小矩形,被标记的计入总面积

最短路径
[743]Network Delay Time
Dijkstra 或者 SPFA

Divide and Conquer

  1. 逆序数
  2. 不一定是分成2份,也可以分成多份,比如String.split后处理字符串

Math
[某题]
贝祖定理 Bézout’s theorem
贝祖定理是代数几何中一个定理,其内容是若设a,b是整数,则存在整数x,y,使得ax+by=gcd(a,b),(a,b)代表最大公因数,则设a,b是不全为零的整数,则存在整数x,y,使得ax+by=(a,b)。