給定一個包含整數的陣列,返回其中存在對應負數的正數(使用 JavaScript 實現)。


在給定的問題陳述中,我們得到一個包含正數和負數的陣列。因此,我們的任務是保留正數,並從陣列中過濾掉負數。並在 Javascript 中實現該解決方案。

理解問題

我們將得到一個整數陣列,我們需要找到存在對應負整數的正整數。例如,假設我們有一個整數陣列,例如 [7, -7, 8, -8, 9, -9],在這個陣列中,我們可以看到存在一些正整數和一些負數,因此我們在這個問題中的任務是過濾這個陣列,只保留正數並從陣列中過濾掉負數,因此輸出或陣列將是 [7, 8, 9]。所以基本上我們將實現程式來執行此操作。

給定問題的邏輯

問題陳述指出,我們必須從陣列中提取存在對應負整數的正整數。因此,我們將遍歷給定的數字陣列。對於陣列中的每個專案,我們將遵循某些步驟。如果迭代中的專案為正數,則將其新增到集合中。此集合將儲存所有正數。如果該專案為負數,則我們將檢查其絕對值是否存在於集合中;如果存在,則表示此負數的正對應項存在於陣列中。因此,我們將精確值新增到結果陣列中。最後,我們將返回包含存在對應負值的正整數的結果。

演算法

步驟 1:首先,定義一個函式來查詢陣列中存在對應負數的正數。並將此函式命名為 findPositives,此函式將採用陣列作為引數。

步驟 2:建立一個集合來儲存陣列的正數集合。並定義一個空陣列來儲存結果。

步驟 3:然後我們將遍歷整數陣列。我們將檢查陣列中每個專案的某些條件。第一個條件是檢查該專案是否為正數且大於 0。如果條件為真,則將其新增到名為 positiveSet 的集合中。此變數將用於儲存陣列中存在的所有正整數。

步驟 4:檢查專案是否為負數或小於 0。因此確定其絕對值是否存在於正數集合中。如果條件為真,則表明負數的正數存在於陣列中。因此,將該值新增到結果陣列中。

步驟 5:最後,返回陣列中關於其負值的正值的result。

示例

//Function to find the positives into the array with their respective negatives
function findPositives(arr) {
   const positiveSet = new Set();
   const result = [];
 
   for (let num of arr) {
   if (num > 0) {
      positiveSet.add(num);
   } else if (num < 0 && positiveSet.has(Math.abs(num))) {
   result.push(Math.abs(num));
   }
}
 
    return result;
}
const array = [1, -1, 2, -2, 3, -4, 4, 5, -5];
const positives = findPositives(array);
 
console.log(positives);

輸出

[ 1, 2, 5 ]

複雜度

由於程式碼在迴圈中遍歷陣列一次,並且對每個專案執行恆定時間操作。因此,程式碼的時間複雜度為 O(n),其中 n 是輸入陣列的大小。程式碼的空間複雜度也為 O(n)。

結論

該程式有效地找到了一個解決方案,以獲取存在對應負值並在陣列中可用的正整數。因為我們已經遍歷了陣列並維護了一個正整數集合來檢查其對應的負整數。總的來說,我們可以說這是給定問題的直接解決方案,具有線性時間複雜度。

更新於: 2023年8月14日

433 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.