Computer >> Máy Tính >  >> Lập trình >> Javascript

Tạo mảng duy nhất trong JavaScript

Vấn đề

Chúng tôi được yêu cầu viết một hàm JavaScript lấy một mảng số, arr, làm đối số đầu tiên và duy nhất.

Một lần di chuyển bao gồm việc chọn bất kỳ arr [i] nào và tăng nó lên 1. Hàm của chúng ta phải trả về số lần di chuyển ít nhất để làm cho mọi giá trị trong mảng arr là duy nhất.

Ví dụ:nếu đầu vào của hàm là -

const arr = [12, 15, 7, 15];

Sau đó, đầu ra phải là -

const output = 1;

Giải thích đầu ra

Bởi vì nếu chúng ta tăng bất kỳ 15 đến 16, mảng sẽ bao gồm tất cả các phần tử duy nhất.

Ví dụ

Mã cho điều này sẽ là -

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

Và đầu ra trong bảng điều khiển sẽ là -

1