查詢陣列中可以加和為目標值的數字(JavaScript)


在這個問題陳述中,我們需要藉助 Javascript 功能找到陣列中所有可以加和為給定目標值的數字。這項任務可以使用 Javascript 的一些內建函式來完成,或者我們可以使用多個 for 迴圈來解決。

給定問題的邏輯

問題指出,我們必須找出陣列中可以將它們加起來得到與目標值完全相同的數字,並藉助 Javascript 功能實現。

我們需要找到這些數字,並將它們加在一起得到等於目標值的和。為此,我們將初始化一個數組和一個目標值。然後,我們將遍歷每個陣列值,並再次遍歷陣列中其餘的元素,以檢查是否存在一對元素的和等於目標值。如果找到該對,則將其新增到新陣列中。因此,最終我們將得到一個元素陣列,這些元素的和將等於提到的目標值。

演算法

步驟 1 - 在第一步,我們需要定義一個函式,該函式將找出陣列中可以得到目標值所需和的數字。

步驟 2 - 現在我們將定義一個空陣列,它將儲存結果子陣列的數字。

步驟 3 - 完成第二步後,我們將使用 for 迴圈迭代陣列中的所有元素,直到陣列的長度。push

步驟 4 - 現在我們使用另一個 for 迴圈或巢狀 for 迴圈來獲取所需的兩個元素。這兩個元素的和應該等於目標值。

步驟 5 - 如果這兩個元素的總和等於目標值,我們將將其新增到我們在步驟二中定義的陣列中。

步驟 6 - 在下一步中,將陣列和目標值傳遞給函式以執行併產生結果。

步驟 7 - 在最後一步,將數字陣列和目標值傳遞給函式後,將輸出結果到控制檯。

演算法程式碼

function possibleNums(array, targetValue) {
   const numbersArray = [];
   // nested loops to find the sum as target value
   for (let i = 0; i < array.length; i++) {
      for (let j = i + 1; j < array.length; j++) {
         if (array[i] + array[j] === targetValue) {
            numbersArray.push([array[i], array[j]]);
         }
      }
   }
   return numbersArray;
}
const array = [1, 2, 3, 4, 5, 6, 7];
const targetValue = 7;
const numbersArray = possibleNums(array, targetValue);
console.log(numbersArray);

複雜度

假設 n 是給定陣列的長度,那麼上述演算法的時間複雜度為 O(n^2)。因為我們使用了兩個巢狀的 for 迴圈來迭代並根據給定的問題獲得所需的結果。

演算法的空間複雜度由輸入陣列的大小和找到的總和為目標值的配對數量決定。如果 n 是陣列項的數量,則 pairs 陣列所需的空間與總和為目標值的配對數量成正比。因此,配對的數量將為 n/2。因此,整個空間複雜度將為 O(n)。

結論

在上面的程式碼中,我們使用了兩個巢狀迴圈並建立了一個函式來根據給定的問題陳述獲得所需的結果。基本上,我們必須比較兩個元素的和以獲得等於程式碼中提到的目標值的和。找到這些元素後,我們將這些元素推入新陣列以顯示輸出。因此,執行這段程式碼需要 O(n^2) 的時間才能完成。儲存結果所需的記憶體為 O(n)。

更新於:2023年5月18日

瀏覽量 1K+

開啟你的職業生涯

完成課程獲得認證

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