| 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    }}
 |