278. First Bad Version

来源:互联网 发布:西门子机床数据采集 编辑:程序博客网 时间:2024/06/07 00:10

题目

278. First Bad Version

解题思路

很明显就是二分搜索,但是被溢出坑了很久一直超时qaq
超时的解决方法:

  • 类型转换:long long int mid = ((long long int)left + (long long int)right) / 2;

  • 防溢出代码:int mid = left + (right - left) / 2;

(Binary search algorithm)

具体代码

// Forward declaration of isBadVersion API.bool isBadVersion(int version);class Solution {public:    int binary_search(int left, int right) {        while (left < right) {            long long int mid = ((long long int)left + (long long int)right) / 2;            if (isBadVersion(mid)) {                right = mid;            }            else {                left = mid + 1;            }        }        return left;    }    int firstBadVersion(int n) {        return binary_search(1, n);    }};
原创粉丝点击