wordpress SEO模广东宣布即时优化调整
巧用哈希表与前缀和,前缀和差为k的两个序号之间的数组就是满足条件的子数组,用哈希表来存放每个序号的前缀和。
前缀和就是头元素到当前序号子数组元素的和
class Solution {
public:int subarraySum(vector<int>& nums, int k) {unordered_map<int, int> mp;mp[0] = 1;int count = 0, pre = 0;for (auto& x:nums) {pre += x;if (mp.count(pre - k)) {//看有没有前缀和差为目标k的两个序号count += mp[pre - k];//有的话答案加上满足的前序数量}mp[pre]++;//记录每一个序号的前缀和,前缀和相等的话,map->second计数会加一}return count;}
};