ปัญหา
เราจำเป็นต้องเขียนฟังก์ชัน 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