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

Tìm phần tử lớn hơn tất cả phần tử bên phải - JavaScript

Viết hàm nhận mảng số, trả về mảng con chứa các phần tử lớn hơn tất cả các phần tử nằm bên phải nó.

Ví dụ

Mảng: [12, 45, 6, 4, 23, 23, 21, 1]

Duyệt từ phải sang trái, giữ track max:

  • 1: max=1 → giữ
  • 21 > 1 → giữ, max=21
  • 23 > 21 → giữ, max=23
  • 23 = 23 → không giữ (không lớn hơn)
  • 4, 6 < 23 → không giữ
  • 45 > 23 → giữ, max=45
  • 12 < 45 → không giữ

Kết quả: [1, 21, 23, 45] (theo thứ tự từ phải sang trái)

Giải pháp

Dùng reduceRight:

const arr = [12, 45, 6, 4, 23, 23, 21, 1];
const largerThanRight = (arr = []) => {
  return arr.reduceRight((acc, val) => {
    let { largest, res } = acc;
    if (val > largest) {
      res.push(val);
      largest = val;
    }
    return { largest, res };
  }, { largest: -Infinity, res: [] }).res;
};

console.log(largerThanRight(arr));

Kết quả

Đầu ra trong console:

[1, 21, 23, 45]