力扣练习之第一个错误的版本

我爱海鲸 2022-09-22 15:07:12 暂无标签

简介初级算法、排序和搜索

原题出处:https://leetcode.cn/leetbook/read/top-interview-questions-easy/xnto1s/

解法一:

/* The isBadVersion API is defined in the parent class VersionControl.
      boolean isBadVersion(int version); */

public class Solution extends VersionControl {
    public int firstBadVersion(int n) {
        int start = 1,end = n;
        while (start < end) {
            int mid = start+(end-start)/2;
            if (!isBadVersion(mid)) {
                start = mid +1;
            } else {
                end = mid;
            }
        }
        return start;
    }
}

思路:二分查找法,就是找到中间值,校验是否为坏版本,若不是坏版本,则将当前中间版本加一再赋值给起始查找值,如果是坏版本则将中间值赋值给终止值即可。

这里int mid = start+(end-start)/2;而不使用int mid = (start+end)/2 是因为如果end的值过大就会超出int值的范围,会造成数据溢出,故而使用start+(end+start)/2。

你好:我的2025