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