【easy】278. First Bad Version

有一系列產品,從某個開始其後都不合格,給定一個判斷是否合格的函數,找出N個產品中第一個不合格的產品。函數

正確答案:spa

// Forward declaration of isBadVersion API.
bool isBadVersion(int version);

class Solution {
public:
    int firstBadVersion(int n) {
        int low = 1;
        int high = n;
        int ver = 0;
        while (low < high) {
            ver = low + (high - low) / 2;   
            //這個題注意點!!若是直接high+low可能溢出,就會超時……
            
            if (isBadVersion(ver)) {
                high = ver;
            } else {
                low = ver + 1;
            }
        }
        return low;
    }
};

 

=============code

有一道很是相似的題目blog

猜數遊戲:1-n以內有一個數是預選的數字,每次回告訴大仍是小或者正確。返回猜中的數字。遊戲

// Forward declaration of guess API.
// @param num, your guess
// @return -1 if my number is lower, 1 if my number is higher, otherwise return 0
int guess(int num);

class Solution {
public:
    int guessNumber(int n) {
        int start = 1;
        int end = n;
        int res = 1;
        while (start<end){
            int mid = start + (end-start)/2;
            if (guess(mid)==0){
                return mid;
            }
            if (guess(mid)==1)
                start = mid+1;
            else
                end = mid-1;
        }
        if (guess(start))
            return start;
        return end;
    }
};
相關文章
相關標籤/搜索