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