ปัญหา
เราต้องเขียนฟังก์ชัน JavaScript ที่รับอาร์เรย์ของตัวเลข arr เป็นอาร์กิวเมนต์เดียว
การเคลื่อนที่ (move) ประกอบด้วยการเลือก arr[i] ใดๆ แล้วเพิ่มค่าขึ้น 1 ฟังก์ชันควรคืนจำนวนการเคลื่อนที่น้อยที่สุดเพื่อทำให้ทุกค่าในอาร์เรย์ arr ไม่ซ้ำกัน
ตัวอย่างเช่น หากอินพุตคือ
const arr = [12, 15, 7, 15];
ผลลัพธ์ควรเป็น
const output = 1;
คำอธิบายผลลัพธ์
เพราะถ้าเพิ่ม 15 ใดๆ เป็น 16 อาร์เรย์จะมีสมาชิกไม่ซ้ำกันทั้งหมด
ตัวอย่างโค้ด
const arr = [12, 15, 7, 15];
const makeUnique = (arr = []) => {
arr.sort((a, b) => a - b);
let count = 0;
for (let i = 1; i < arr.length; i++) {
if (arr[i] <= arr[i - 1]) {
const temp = arr[i];
arr[i] = arr[i - 1] + 1;
count += arr[i] - temp;
}
}
return count;
};
console.log(makeUnique(arr));ผลลัพธ์
ผลลัพธ์ในคอนโซลจะเป็น
1