在 JavaScript 中建立唯一陣列


問題

我們需要編寫一個 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

更新於: 09-Apr-2021

167 次瀏覽

開啟你的職業生涯 生涯

透過完成課程獲得認證

開始學習
廣告
© . All rights reserved.