Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Làm mảng độc nhất trong JavaScript

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