binary search中遇到的一个overflow问题

来源:互联网 发布:简书独立域名 编辑:程序博客网 时间:2024/05/02 13:27

做leetcode的一道很普通的二分查找的问题的时候,使用的是用惯的mid=(front+low)/2写法,结果这次遇到了overflow问题,改成mid=front+(back-front)/2就没有问题了。

写在这提醒一下自己要注意溢出问题。


先抄下题目原文:

然后我写的二分查找是:

// Forward declaration of isBadVersion API.bool isBadVersion(int version);class Solution {public:    int firstBadVersion(int n) {        if(n==0)return 0;        int front=1,back=n;        while(front<back){            int middle=front+(back-front)/2;            front=(isBadVersion(middle))?front:middle+1;            back=(isBadVersion(middle))?middle:back;        }        return front;    }};