First Bad Version(二分查找的应用)

来源:互联网 发布:java 扫描二维码登陆 编辑:程序博客网 时间:2024/06/05 02:45

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.

Solutions:


    mid = (low+high)/2和 mid=low+(high-low)/2 一般情况下等价,但在数比较大的时候low+high容易溢出。

    算法中还有疑问的地方见代码

class Solution {public:    int firstBadVersion(int n) {        if(n<1) {            return -1;        }        int low=1, high=n;        int mid;        while(low < high) {            mid=low+(high-low)/2;            if(isBadVersion(mid)==true) {                high=mid;//数据结构书中二分查找是high=mid-1,此处何区别?                         //是因为此处下标是从1开始的吗?            } else {                low=mid+1;            }        }return low;    }};



0 0
原创粉丝点击