2013-10-27总结
-
二分
-
条件为l<h-1,防止 (2+3)/2 == 2 死循环,在之后对l与h分别判断哪个是x
-
if([mid] < = x),大于等于的一端取‘=’,另外一端取‘= mid+1 或者mid-1’
-
-
search in rotated sorted array
-
有一个trick是,当[l]与[h]与[mid]相等的时候,有两种情况,一种其他数在mid左边,另外一种其他数在mid右边
-
-
merge sorted array A and B
-
直接从len(A)+len(B)-1处开始填,不会覆盖A的
-
如果最后B没有填完,还要写个循环把B填写进去
-
-
sort by anagrams
-
其实就是按anagrams分组
-
关键是sortChars函数
-
然后直接sort或者以sortChars为Key放在一个Map里面,然后再逐个读出
-
-
search in sorted array with empty strings
-
先写个binary search
-
然后改,[mid]为””时,向两边找第一个不为空设为mid,直到越过l或者h
-
-
Longest Increasing Subsequence,LIS
-
动态规划,end[i]保存以[i]结尾的最大长度
-
end[t] = max i from 0...t-1, if array[t] < array[i]: 1 else: end[i] + 1
-
-
数据流,insert,getRank
-
Binary search tree
-
每个节点多存一个数据,左子树节点数目
-
-
Find the ceiling value of a BST
-
找得到,保存路径,计算inorder的下一个节点
-
找不到,假设插入此节点,找inorder的下一个节点
-
-
index in array,detect a cycle
- 打标记