278. 第一个错误的版本

这道题我用的是二分查找,开始直接判断是不是第一个版本就有问题,如果有问题就直接return 1.然后创建两个索引,左边的索引开始指向版本1,右边的索引指向版本n,然后取index = (left + right) / 2
, 如果index是好版本,那就让左指针指向index,如果是坏版本,那就让右指针指向index,然后一次次的迭代,直到左右指针相邻为止,也就是 right - left == 1时,此时,right就是第一个出错的版本

class Solution
{
public:
    int firstBadVersion(int n)
    {
        long  right = n;
        long  left = 1;
        long  index;
        if (isBadVersion(1))
        {
            return 1;
        }
        while (right - left != 1)
        {
            index = (left + right) / 2;
            if (isBadVersion(index))
            {
                right = index;
            }
            else
            {
                left = index;
            }
        }
        return right;
    }
};

你可能感兴趣的:(278. 第一个错误的版本)