Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Kiểm tra mảng tăng/dảm ngặt - JavaScript

Viết hàm kiểm tra mảng có phải là tăng ngặt (strictly increasing) hoặc giảm ngặt (strictly decreasing) hay không.

  • Tăng ngặt: mỗi phần tử > phần tử trước
  • Giảm ngặt: mỗi phần tử < phần tử trước

Giải pháp

Mã triển khai:

const arr = [12, 45, 6, 4, 23, 23, 21, 1];
const arr2 = [12, 45, 67, 89, 123, 144, 2656, 5657];

const sameSlope = (a, b, c) => (b - a < 0 && c - b < 0) || (b - a > 0 && c - b > 0);

const increasingOrDecreasing = (arr = []) => {
  if (arr.length <= 2) return true;
  for (let i = 1; i < arr.length - 1; i++) {
    if (!sameSlope(arr[i-1], arr[i], arr[i+1])) return false;
  }
  return true;
};

console.log(increasingOrDecreasing(arr));  // false
console.log(increasingOrDecreasing(arr2)); // true

Kết quả

Đầu ra trong console:

false
true

Giải thích: Kiểm tra dấu của hiệu giữa 3 phần tử liên tiếp. Nếu dấu thay đổi → không đơn điệu.