Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

การลบค่าซ้ำจากอาร์เรย์ที่จัดเรียงแล้วใน JavaScript

สมมติเราได้รับอาร์เรย์ของค่าคงที่ที่จัดเรียงแล้ว เราต้องเขียนฟังก์ชันที่ลบค่าซ้ำทั้งหมดในอาร์เรย์แบบ in-place ให้แต่ละองค์ประกอบปรากฏแค่ครั้งเดียว และคืนความยาวใหม่ของอาร์เรย์

เงื่อนไขคือ ห้ามจัดสรรพื้นที่เพิ่มสำหรับอาร์เรย์อื่น ต้องแก้ไขอินพุตอาร์เรย์ in-place ด้วย O(1) extra memory

ตัวอย่างโค้ด

const arr = [1, 3, 3, 6, 7, 7, 9, 11, 13];
const removeDuplicates = (arr = []) => {
  let i=0;
  while(i < arr.length - 1){
    let j = i + 1;
    if(arr[i] === arr[j]){
      arr.splice(j,1);
    }else{
      i++;
    }
  };
};
removeDuplicates(arr);
console.log(arr);

ผลลัพธ์

ผลลัพธ์ที่แสดงในคอนโซลจะเป็นดังนี้:

[
  1, 3, 6, 7,
  9, 11, 13
]