Binary Search

什么时候使用二分法?

当题目要求O(logn)复杂度的时候,99%都是二分法。他比线性算法还要快。

当题目要求find any/first/last position of target,可以考虑二分法。

当然,二分法需要在sorted array上进行,如果array本身无序,可以考虑排序他,但是复杂度不再是O(logn)。

二分法有三个境界:

    1. 头尾指针取重点,判断往哪走
    2. 找满足条件的第一个或者最后一个位置
    3. 去掉一半没有解的答案

二分法的通用模板:

    1. start + 1 < end
    2. start + (end - start) / 2
    3. A[mid] ==, <, >
    4. A[start], A[end], target?

results matching ""

    No results matching ""