2
* // This is the MountainArray's API interface.3
* // You should not implement it, or speculate about its implementation4
* function MountainArray() {5
* @param {number} index7
* this.get = function(index) {12
* this.length = function() {18
var binarySearch = function (left, right, condition) {19
while (left < right) {20
var mid = left + Math.floor((right - left) / 2);31
* @param {number} target32
* @param {MountainArray} mountainArr35
var findInMountainArray = function (target, mountainArr) {36
var n = mountainArr.length();37
var maxNumIdx = binarySearch(1, n - 2, function (idx) {38
return mountainArr.get(idx) > mountainArr.get(idx + 1);40
var leftIdx = binarySearch(0, maxNumIdx, function (idx) {41
return mountainArr.get(idx) >= target;43
if (mountainArr.get(leftIdx) === target) {46
var rightIdx = binarySearch(maxNumIdx, n - 1, function (idx) {47
return mountainArr.get(idx) <= target;49
if (mountainArr.get(rightIdx) === target) {