LeetCode First Bad Version

来源:互联网 发布:知肤泉水光面膜怎么用 编辑:程序博客网 时间:2024/05/16 06:03

You are a product manager and currently leading a team to develop a new product. Unfortunately, the latest version of your product fails the quality check. Since each version is developed based on the previous version, all the versions after a bad version are also bad.

Suppose you have n versions [1, 2, ..., n] and you want to find out the first bad one, which causes all the following ones to be bad.

You are given an API bool isBadVersion(version) which will return whether version is bad. Implement a function to find the first bad version. You should minimize the number of calls to the API.

这个题目是要查找[1,2,3,4,5,6,7]其中划线的起始位置,由于版本号是有序的,又是查找,因此想到用二分查找来找第一个位置。重点在于在判断的时候,如果当前的位置不是badversion,那么往右+1,因为不是badversion的下一位有可能就是badversion,然后还要限制当fir==sec的时候,这个时候就找到第一个位置返回当前的值。

// Forward declaration of isBadVersion API.bool isBadVersion(int version);class Solution {public:    int firstBadVersion(int fir,int sec)    {        //感觉可以采用二分查找的方法        if(fir<sec)        {           int middle = fir+ (sec-fir)/2;           if(isBadVersion(middle))           {              return firstBadVersion(fir,middle);           }else           {             return firstBadVersion(middle+1,sec);           }        }        return fir;    }    int firstBadVersion(int n) {        return firstBadVersion(1,n);    }};


0 0
原创粉丝点击