LeetCode - 560 解題紀錄
題目: LeetCode - 560. Subarray Sum Equals K
題目說明
給一個陣列及一個 k,求陣列中連續子陣列的和等於 k 的個數。
解題思路
使用一個迴圈,sum 為從 nums[0] 加到當前元素的值,使用 unordered_map<int, int> 紀錄子陣列和出現的次數。對於 sum 來說,每次得到新的 sum 時,若是前面的子陣列和有出現 sum - k 的話,代表新的子陣列和減掉舊的子陣列和就會得到 k,所以每次迴圈 count 都加上 hash[sum - k],最後回傳 count 即可。
參考解法
1 | class Solution { |
補充
++hash[sum] 放在前面做是因為要在裡面放入 {0, 1},代表子陣列和為 0 會出現一次。因為每次得到新的 sum 時,只會調用到 hash[sum - k],所以直接把它放到前面做。
本部落格所有文章除特別聲明外,均採用 CC BY-NC-SA 4.0 許可協議。轉載請註明來自 Larry's notes!
評論