| 123456789101112131415161718192021222324252627282930313233 | 
							- /**
 
-  * Definition for isBadVersion()
 
-  * 
 
-  * @param {integer} version number
 
-  * @return {boolean} whether the version is bad
 
-  * isBadVersion = function(version) {
 
-  *     ...
 
-  * };
 
-  */
 
- /**
 
-  * @param {function} isBadVersion()
 
-  * @return {function}
 
-  */
 
- var solution = function(isBadVersion) {
 
-     /**
 
-      * @param {integer} n Total versions
 
-      * @return {integer} The first bad version
 
-      */
 
-     return function(n) {
 
-         let beg = 1, end = n, gap = 0
 
- 		while (beg < end) {
 
- 			if (gap == end - beg) break
 
- 			gap = end - beg
 
- 			let mid = Math.round((beg + end) / 2)
 
- 			let isBad = isBadVersion(mid)
 
- 			if (isBad) end = mid
 
- 			else if (!isBad) beg = mid + 1
 
- 		}
 
- 		if (isBadVersion(beg)) return beg
 
- 		return end
 
-     }
 
- }
 
 
  |