Leet Code First Bad Version(C)

来源:互联网 发布:伴随矩阵怎么求 编辑:程序博客网 时间:2024/06/15 12:21

题目并不难,思想用二分查找来做

<span style="font-size:18px;">// Forward declaration of isBadVersion API.bool isBadVersion(int version);int firstBadVersion(int n) {    unsigned int start = 1,end = n;    int medium = (double)n/2 + (double)1/2;    while(medium <= n && medium > 0 && end > start){        if(isBadVersion(medium)){            if(medium - 1 >= start && !isBadVersion(medium - 1)){                return medium;                //break;            }else{                end = medium - 1;                if(end < start || end < 1)                    break;            }        }else{            if(medium + 1 <= end && isBadVersion(medium + 1)){                //break;                return medium+1;            }else{                start = medium +1;                printf("start:%u\n",start);                if(end < start || start > n )                    break;            }        }        if(end%2 && start%2)            medium = end/2 + start/2 + 1;        else            medium = end/2 + start/2;    }    return medium;}</span>
这个题目恶心在,中间有个例子的version是2147483647,恰好是int类型的最大上界

所以二分查找中的时候取中位数的时候导致越界,从而出错

更改了一下变量类型,并在处理中位数细节的时候进行注意才算通过

0 0
原创粉丝点击