สมมติเราได้รับอาร์เรย์ของค่าคงที่ที่จัดเรียงแล้ว เราต้องเขียนฟังก์ชันที่ลบค่าซ้ำทั้งหมดในอาร์เรย์แบบ 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 ]