leetcode 560 和为k的自数组

和为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)

在这里插入图片描述

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;
    }
};

猜你喜欢

转载自blog.csdn.net/qq_44814825/article/details/129984578