สมมติว่าเราได้รับอาร์เรย์ของตัวอักษรที่เรียงลำดับ เราจำเป็นต้องเขียนฟังก์ชันที่จะลบข้อมูลที่ซ้ำกันทั้งหมดออกจากอาร์เรย์แบบแทนที่ เพื่อให้แต่ละองค์ประกอบปรากฏเพียงครั้งเดียวและคืนค่าความยาวใหม่ของอาร์เรย์
เงื่อนไขในการทำเช่นนี้คือเราไม่สามารถจัดสรรพื้นที่เพิ่มเติมสำหรับอาร์เรย์อื่นได้ เราต้องทำสิ่งนี้โดยแก้ไขอาร์เรย์อินพุตแทนที่ด้วยหน่วยความจำพิเศษ O(1)
ตัวอย่าง
รหัสสำหรับสิ่งนี้จะเป็น −
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 ]