Find Peak Element LeetCode solution in JavaScript

1
/**
2
* @param {number[]} nums
3
* @return {number}
4
*/
5
var findPeakElement = function (nums) {
6
if (nums.length === 1) return 0;
7

8
const recursion = (startIndex, endIndex) => {
9
const midIndex = Math.floor((startIndex + endIndex) / 2);
10

11
if (startIndex === endIndex) return startIndex;
12
if (startIndex + 1 === endIndex) {
13
return nums[endIndex] >= nums[startIndex] ? endIndex : startIndex;
14
}
15

16
if (
17
nums[midIndex] > nums[midIndex - 1] &&
18
nums[midIndex] > nums[midIndex + 1]
19
)
20
return midIndex;
21
if (
22
nums[midIndex] > nums[midIndex - 1] &&
23
nums[midIndex] < nums[midIndex + 1]
24
)
25
return recursion(midIndex + 1, endIndex);
26
if (
27
nums[midIndex] < nums[midIndex - 1] &&
28
nums[midIndex] > nums[midIndex + 1]
29
)
30
return recursion(startIndex, midIndex - 1);
31
if (
32
nums[midIndex] < nums[midIndex - 1] &&
33
nums[midIndex] < nums[midIndex + 1]
34
)
35
return nums[midIndex - 1] > nums[midIndex + 1]
36
? recursion(startIndex, midIndex - 1)
37
: recursion(midIndex + 1, endIndex);
38
};
39

40
return recursion(0, nums.length - 1);
41
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0