Skip to content
Rain Hu's Workspace
Go back

[Algo] 3-2. Binary Search

Rain Hu

Binary Search 二元搜索法

1. 三元搜

2. 對答案二分搜

例題:Leetcode875. Koko Eating Bananas

int minEatingSpeed(vector<int>& piles, int h) {
    int max = *max_element(piles.begin(), piles.end());
    if (piles.size() == h)
        return max;
    int left = 1, right = max + 1;
    while (left < right){
        int mid = left + (right-left)/2;
        if (canFinish(piles, mid, h)){
            right = mid;
        } else {
            left = mid + 1;
        }
    }
    return left;
}

bool canFinish(vector<int> piles, int speed, int h){
    int time = 0;
    for (int n : piles){
        time += n/speed + ((n % speed > 0) ? 1 : 0);
    }
    return time <= h;
}


Share this post on:

Previous
[IT] 關聯模式的五大鍵 Super key、Candidate Key、Primary Key、Alternate Key、Foreign Key
Next
[C#] C#3、LINQ 及相關特性