LC.278. First Bad Version

https://leetcode.com/problems/first-bad-version/description/

You are given an API bool isBadVersion(version) which will return whether version is bad. Implement a function to find the first bad version.
You should minimize the number of calls to the API.
time: log(n)
space: o(1)
 
 1 public int firstBadVersion(int n) {
 2         int left = 1, right = n;
 3         while (left + 1 < right) {
 4             int mid = left + (right - left) / 2;
 5             if (isBadVersion(mid)) {
 6                 right = mid;
 7             } else if (!isBadVersion(mid)) {
 8                 left = mid;
 9             } else {
10                 right = mid;
11             }
12         }
13         //post processing: same as first occurance  
14         if (isBadVersion(left)) {
15             return left;
16         }
17         if (isBadVersion(right)) {
18             return right;
19         }
20         return -1;
21     }

 

posted @ 2018-03-17 02:24  davidnyc  阅读(120)  评论(0编辑  收藏  举报