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

Đệ quy xóa phần tử trùng lặp liên tiếp - JavaScript

Viết hàm đệ quy xóa các phần tử trùng lặp liên tiếp trong mảng (in-place, không dùng bộ nhớ thêm).

Ví dụ

Đầu vào: [17, 17, 17, 12, 12, 354, 354, 1, 1, 1]

Kết quả: [17, 12, 354, 1]

Giải pháp

Mã triển khai đệ quy:

const arr = [17, 17, 17, 12, 12, 354, 354, 1, 1, 1];

const removeConsecutiveDuplicates = (arr, index = 0) => {
  if (index >= arr.length - 1) return;
  if (arr[index] === arr[index + 1]) {
    arr.splice(index + 1, 1);
    removeConsecutiveDuplicates(arr, index); // Kiểm tra lại vị trí này
  } else {
    removeConsecutiveDuplicates(arr, index + 1);
  }
};

removeConsecutiveDuplicates(arr);
console.log(arr);

Kết quả

Đầu ra trong console:

[17, 12, 354, 1]

Giải thích: So sánh phần tử hiện tại với phần tử tiếp theo. Nếu trùng, xóa phần tử tiếp theo và kiểm tra lại tại cùng vị trí.