-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathDay101.js
41 lines (30 loc) · 1005 Bytes
/
Day101.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
//* Implement a function to check if a given array of integers represents a valid mountain array.
// A valid mountain array must follow these rules:
// arr.length >= 3
// There exists some index i with 0 < i < arr.length - 1 such that:
// arr[0] < arr[1] < ... < arr[i - 1] < arr[i]
// arr[i] > arr[i + 1] > ... > arr[arr.length - 1]
// mountainArray.js
function isValidMountainArray(arr) {
const n = arr.length;
if (n < 3) return false;
let i = 0;
// Walk up
while (i + 1 < n && arr[i] < arr[i + 1]) {
i++;
}
// Peak can't be first or last
if (i === 0 || i === n - 1) return false;
// Walk down
while (i + 1 < n && arr[i] > arr[i + 1]) {
i++;
}
return i === n - 1;
}
// Example usage
const arr1 = [2, 1];
const arr2 = [3, 5, 5];
const arr3 = [0, 3, 2, 1];
console.log(isValidMountainArray(arr1)); // Output: false
console.log(isValidMountainArray(arr2)); // Output: false
console.log(isValidMountainArray(arr3)); // Output: true