Mảng có đỉnh trung tâm
Chúng tôi gọi một mảng arr là mảng có đỉnh tập trung nếu các thuộc tính sau giữ -
-
arr.length> =3
-
Tồn tại một số i với 0
-
arr [0]
-
arr [i]> arr [i + 1]> ...> arr [arr.length - 1]
-
Vấn đề
Chúng tôi được yêu cầu viết một hàm JavaScript lấy một mảng số, arr, làm đối số đầu tiên và duy nhất.
Mảng đầu vào là một mảng có đỉnh tập trung. Hàm của chúng ta phải trả về chỉ số đỉnh của mảng có đỉnh tập trung này.
Ví dụ:nếu đầu vào của hàm là
Đầu vào
const arr = [4, 6, 8, 12, 15, 11, 7, 4, 1];
Đầu ra
const output = 4;
Giải thích đầu ra
Vì phần tử ở chỉ số 4 (15) là phần tử cao nhất của mảng này.
Ví dụ
Sau đây là mã -
const arr = [4, 6, 8, 12, 15, 11, 7, 4, 1]; const findPeak = (arr = []) => { if(arr.length < 3) { return -1 } const helper = (low, high) => { if(low > high) { return -1 } const middle = Math.floor((low + high) / 2) if(arr[middle] <= arr[middle + 1]) { return helper(middle + 1, high) } if(arr[middle] <= arr[middle - 1]) { return helper(low, middle - 1) } return middle } return helper(0, arr.length - 1) }; console.log(findPeak(arr));
Đầu ra
4