ปัญหา
เราจำเป็นต้องเขียนฟังก์ชัน JavaScript ที่รับอาร์เรย์ของตัวเลข arr เป็นอาร์กิวเมนต์แรกและอาร์กิวเมนต์เดียว
การย้ายประกอบด้วยการเลือก 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