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

Tìm phần tử đặc biệt trong mảng trong JavaScript

Chúng ta cần viết một hàm JavaScript nhận vào ba đối số, tức là:

arr --> mảng số nguyên m --> số nguyên dương n --> số nguyên dương

Nhiệm vụ của hàm là tìm xem có tồn tại hai phần tử (gọi chúng là a1 và a2) sao cho:

  • Hiệu tuyệt đối giữa a1 và a2 tối đa là m
  • Hiệu tuyệt đối giữa chỉ số của a1 và a2 tối đa là n

Ví dụ

Dưới đây là mã nguồn:

const arr = [1, 2, 3, 1, 7, 8]; const findSpecialElements = (arr = [], m, n) => {    const map = arr    .map((el, ind) => ({ el, ind }))    .sort((a, b) => a.el - b.el);    let left = 0;    let right = 1;    while (right < map.length) {       const diff = Math.abs(map[right].el - map[left].el);       const range = Math.abs(map[right].ind - map[left].ind);       if (diff <= n && range <= m){          return true       }else if (diff > n){          left++;       }else if (range > m){          right++;       };       if (left === right){          right++;       };    };    return false; }; console.log(findSpecialElements(arr, 3, 0));

Kết quả

Đầu ra trên console:

true

Lưu ý: Code có nhầm tham số: điều kiện kiểm tra diff <= n && range <= m nhưng tham số truyền vào là (arr, 3, 0) nghĩa là m=3, n=0. Logic code dùng n cho diff, m cho range - ngược với tên tham số. Bài toán類似 "Contains Duplicate III" (LeetCode 220).