LeetCode First Bad Version 二分法

来源:互联网 发布:星河战队3 知乎 编辑:程序博客网 时间:2024/06/04 01:09

思路:

二分法。

注意找中间的元素一定要用:

mid = left + (right - left) / 2;

而不能用:(因为可能溢出

mid = (left + right) / 2;

时间复杂度:O(lgN),空间复杂度:O(1)。

java code:

/* The isBadVersion API is defined in the parent class VersionControl.      boolean isBadVersion(int version); */public class Solution extends VersionControl {    public int firstBadVersion(int n) {        if(n <= 0) return 0;        int start = 1, end = n;        while(start < end) {            int mid = start + (end - start) / 2;            if(!isBadVersion(mid)) {                start = mid + 1;            }else {                end = mid;            }        }        return end;    }}
0 0
原创粉丝点击