> 文章列表 > leetcode 560 和为k的自数组

leetcode 560 和为k的自数组

leetcode 560 和为k的自数组

和为k的自数组

leetcode 560 和为k的自数组

高刷题(暴力超时)

class Solution {
public:int subarraySum(vector<int>& nums, int k) {int result = 0;int sum = 0;for(int i=0 ; i<nums.size() ; i++){for(int j=i ; j<nums.size() ; j++){sum += nums[j];if(sum == k) result++;}sum = 0;}return result;}
};

高刷题(前缀和 + map)

leetcode 560 和为k的自数组

class Solution {
public:int subarraySum(vector<int>& nums, int k) {int result = 0;int pre = 0;unordered_map<int , int> preMap;preMap[pre]++;for(int i=0 ; i<nums.size() ; i++){pre += nums[i];if(preMap.find( pre -k ) != preMap.end() ) result += preMap[pre-k];preMap[pre]++;}return result;}
};