JavaScript 求和為 K 的所有子陣列


在本問題陳述中,我們的任務是使用 Javascript 編寫獲取和為 K 的所有子陣列總數的函式。為此,我們將使用 Javascript 的基本功能。

理解問題陳述

問題陳述是建立一個函式,該函式將接收一個整數陣列和一個目標和 K。因此,在處理計算後,它將返回陣列中和為 K 的子陣列的總數。子陣列可以定義為陣列中連續的一系列項。例如,假設我們有給定的陣列 [1, 2, 3, 4, 5] 且 K 為 3,那麼有兩個和為 3 的子陣列,即 [1, 2] 和 [3]。

上述問題的邏輯

為了解決給定的問題,我們可以使用迴圈遍歷陣列的項,並且我們還將跟蹤到給定點的元素之和。因此,我們可以使用 for 迴圈來儲存和及其頻率。我們將檢查當前和是否等於 K 的值。如果為真,則將計數值加 1。處理完陣列的所有項後,我們將獲得形成和為 K 的子陣列的總數。

演算法

步驟 1:由於我們必須找到和為 K 的子陣列的總數,因此為了完成此任務,我們將定義一個名為 subarraysWithSumK 的函式。並在該函式中使用兩個引數 arr 和 K。

步驟 2:定義上述函式後,在函式體中,我們將定義一個名為 count 的變數,並將該變數的初始值為零。

步驟 3:因此,藉助迴圈,我們將迭代給定陣列以獲取陣列中項的和。

步驟 4:然後我們將定義一個變數並將其命名為 sum,並將其初始值為零。

步驟 5:之後,我們將使用另一個迴圈遍歷上述迴圈的項。並且在這個迴圈中,我們將對每個項求和並將結果儲存在 sum 變數中。

步驟 6:然後我們將檢查條件,即 sum 的值是否等於 K 的值,如果是,則將 count 值加 1。

示例

function subarraysWithSumK(arr, K) {
   let count = 0;
   for (let i = 0; i < arr.length; i++) {
      let sum = 0;
      for (let j = i; j < arr.length; j++) {
         sum += arr[j];
         if (sum === K) {
            count++;
         }
      }
   }
    return count;
}
 
const arr = [1, 2, 3, 4, 5];
const K = 6;
console.log(subarraysWithSumK(arr, K));

輸出

1

複雜度

查詢和為 K 的子陣列總數的演算法需要 O(n) 時間,其中 n 是陣列中的項數。此程式碼使用恆定量的時間來處理陣列中的每個項。程式的空間複雜度為 O(1)。

結論

這就是我們解決上述問題陳述的方式。我們已經實現了獲取和為 K 的子陣列計數的程式碼。它跟蹤陣列項並檢查和是否等於 K。

更新於: 2023 年 8 月 14 日

333 次瀏覽

開啟你的 職業生涯

完成課程獲得認證

開始學習
廣告