Problem: 560. 和为 K 的子数组
解析
前缀和+哈希表
对于子数组区域求和,很容易想到用到大前缀和-小前缀和=当前区域和
再用hash表来储存前缀和数组的信息
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| class Solution { public: int subarraySum(vector<int> &nums, int k) { int res = 0; int sum = 0; unordered_map<int, int> hashTable; hashTable[0] = 1; for (int i = 0; i < nums.size(); ++i) { sum += nums[i]; if (hashTable.find(sum - k) != hashTable.end()) { res += hashTable[sum - k]; } ++hashTable[sum]; } return res; } };
|