在 JavaScript 中查詢陣列中包含多個重複數字的所有重複數字


在給定的問題陳述中,我們必須藉助 Javascript 功能來查詢陣列中包含多個重複項的所有重複數字。因此,我們將使用基本的 Javascript 來解決這個問題。

理解問題

手頭的問題是利用 JavaScript 查詢陣列中的重複數字。因此,我們將基本上提取在給定陣列中出現不止一次的所有數字。作為響應,我們將得到重複數字的陣列。例如,假設我們有一個數組 [1, 1, 4, 8, 2, 2, 6, 6, 6]。在這個陣列中,重複項是 [1, 2, 6]。因此,這個陣列將是函式的輸出。

給定問題的邏輯

為了解決給定的問題,我們將使用一個物件來記錄每個看到的數字的計數。因此,我們將遍歷陣列,對於每個專案,我們將驗證條件:該專案是否已存在於物件中。如果它已經存在,我們將計數加 1。否則,我們將該專案新增到物件中,初始計數為 1。結果,我們從物件中獲得了計數大於 1 的數字,這就是所需的重複數字陣列。

演算法

步驟 1:由於我們必須在給定陣列中查詢重複數字,因此為了解決這個問題,我們將定義一個函式並將其命名為 findDuplicates,在這個函式中,我們將傳遞一個引數陣列。此陣列將包含重複項。

步驟 2:建立上述函式後,我們將建立一個空的雜湊對映或物件來儲存重複數字計數。還要建立一個包含空值的陣列。並將其命名為 duplicates,此陣列將儲存輸入陣列的重複數字。

步驟 3:現在我們位於函式內部,在該函式中我們已經定義了雜湊對映來儲存重複數字資訊。之後,我們將迭代陣列中的每個元素。然後檢查該專案是否作為鍵存在於雜湊對映中。

步驟 4:因此,如果在雜湊對映中存在鍵,我們將計數加 1。否則,我們將該專案新增到雜湊對映中,初始計數為 1。

步驟 5:在此步驟中,我們將使用另一個 for 迴圈來遍歷雜湊對映的鍵值對。

步驟 6:然後我們將檢查條件:如果數字的計數大於 1,我們將將其新增到結果陣列中。

示例

//Function to find the duplicate items
function findDuplicates(array) {
   const countMap = {};
   const duplicates = [];

   for (let i = 0; i < array.length; i++) {
      const num = array[i];
      countMap[num] = (countMap[num] || 0) + 1;
   }

   for (const num in countMap) {
      if (countMap[num] > 1) {
         duplicates.push(Number(num));
      }
   }

   return duplicates;
}

//Usage of the function
const numbers = [1, 2, 3, 4, 4, 5, 6, 6, 7, 8, 8, 8];
const result = findDuplicates(numbers);
console.log(result);

輸出

[ 4, 6, 8 ]

複雜度

在陣列中查詢所有重複數字的時間複雜度為 O(n),其中 n 是給定輸入陣列的大小。因為我們只遍歷給定陣列一次來更新計數對映。這種方法的空間複雜度也是 O(n),因為在最壞情況下,計數對映可能包含所有不同的數字。

結論

因此,我們藉助雜湊對映或物件來記錄計數,從而找到了包含多個數字的所有重複數字。藉助該函式,我們可以輕鬆找出陣列中的重複項並建立一個新的重複項集合。

更新於:2023年8月14日

666 次瀏覽

啟動您的 職業生涯

透過完成課程獲得認證

開始
廣告