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。