Mô tả vấn đề
Chúng ta cần viết hàm JavaScript nhận vào mảng số arr. Hàm kiểm tra xem mảng có phải "centrally peaked" hay không (có đỉnh ở giữa). Trả về true nếu đúng, false nếu sai.
Điều kiện:
- arr.length ≥ 3
- Tồn tại i với 0 < i < arr.length - 1 sao cho: arr[0] < arr[1] < ... < arr[i-1] < arr[i] VÀ arr[i] > arr[i+1] > ... > arr[arr.length-1]
Ví dụ, nếu đầu vào là:
const arr = [2, 6, 7, 9, 5, 3, 1];
Thì đầu ra nên là:
const output = true;
Giải thích đầu ra
Vì mảng đạt đỉnh tại 9.
Ví dụ minh họa
Mã thực hiện (duyệt một lần):
const arr = [2, 6, 7, 9, 5, 3, 1];
const isCentrallyPeaked = (arr = []) => {
let ind = undefined;
for (let i = 1; i <= arr.length - 1; i++) {
if (ind === undefined) {
if (arr[i] < arr[i - 1]) { ind = i - 1; }
else if (arr[i] === arr[i - 1]) { return false; }
} else if (arr[i] >= arr[i - 1]) {
return false;
}
}
return ind > 0 && ind < arr.length - 1;
};
console.log(isCentrallyPeaked(arr));Đầu ra
Kết quả trong console:
true