在 JavaScript 中查詢大於其相鄰元素的元素
我們需要編寫一個 JavaScript 函式,該函式將數字陣列作為第一個也是唯一的引數。
該函式應該查詢並返回陣列中的一個數字,該數字大於其右側和左側的直接數字。如果陣列中存在多個這樣的元素,我們的函式應該返回其中的任何一個。
例如:
如果輸入陣列是:
const arr = [3, 6, 7, 9, 8, 2, 5];
那麼輸出應該是:
const output = 9;
由於問題需要查詢峰值元素,我們可以使用二分查詢演算法的改進版本。
步驟如下:
檢視任何元素。
如果下一個元素和前一個元素都小於當前元素,則我們找到一個解決方案,然後返回當前元素的索引。
如果下一個元素大於當前元素,則右側必須存在一個峰值,遞迴地向右查詢。
如果前一個元素大於當前元素,則左側必須存在一個峰值,遞迴地向左查詢。
示例
以下是程式碼:
const arr = [3, 6, 7, 9, 8, 2, 5];
const greaterThanAdjacent = (arr = [], start = 0, end = arr.length) => {
let mid = start + Math.floor((end - start) / 2);
let curr = arr[mid];
let prev = mid-1 < 0 ? -Infinity : arr[mid-1];
let next = mid+1 > arr.length-1 ? -Infinity : arr[mid+1];
if (curr > prev && curr > next){
return arr[mid];
}
if (curr < next){
return greaterThanAdjacent(arr, mid+1, end);
}
if (curr > next){
return greaterThanAdjacent(arr, start, mid-1);
}
return null;
};
console.log(greaterThanAdjacent(arr));輸出
以下是控制檯輸出:
9
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP