Computer >> Máy Tính >  >> Lập trình >> Javascript

Tìm đỉnh của một mảng có đỉnh tập trung trong JavaScript

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