Mô tả vấn đề
Chúng ta cần viết hàm JavaScript nhận vào mảng số arr. Một phép toán là chọn arr[i] bất kỳ và tăng lên 1. Hàm trả về số phép toán tối thiểu để mọi giá trị trong mảng trở nên duy nhất.
Ví dụ, nếu đầu vào là:
const arr = [12, 15, 7, 15];
Thì đầu ra nên là:
const output = 1;
Giải thích đầu ra
Vì tăng một 15 lên 16 thì mảng toàn giá trị duy nhất.
Ví dụ minh họa
Mã thực hiện (sắp xếp + điều chỉnh):
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));Đầu ra
Kết quả trong console:
1