560. 和为 K 的子数组

Posted yangbocsu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了560. 和为 K 的子数组相关的知识,希望对你有一定的参考价值。

560. 和为 K 的子数组

一、题目

给你一个整数数组 nums 和一个整数 k ,请你统计并返回 该数组中和为 k 的连续子数组的个数 。

二、参考代码

2.1

class Solution 
    public int subarraySum(int[] nums, int k) 
        int n = nums.length;
        int[] preNum = new int[n+1];
        for(int i = 0; i < n; i++)
            preNum[i+1] = preNum[i] + nums[i];
        

        int res = 0;
        for(int i = 0; i <= n; i++)
            for(int j = i+1; j <= n; j++)
                if(preNum[j] - preNum[i] == k)
                    res++;
                
            
        
        return res;

    

2.2

class Solution 
    public int subarraySum(int[] nums, int k) 
        int cnt = 0, pre = 0;
        HashMap<Integer,Integer> map = new HashMap<>();
        map.put(0,1);
        for(int item : nums)
            pre += item;
            if(map.containsKey(pre - k))
                cnt += map.get(pre -k);
            
            map.put(pre,map.getOrDefault(pre,0)+1);
        
        return cnt;
    

以上是关于560. 和为 K 的子数组的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode-560. 和为 K 的子数组

题目地址(560. 和为 K 的子数组)

Leetcode 560.和为k的子数组

560. 和为K的子数组

560. 和为K的子数组

560. 和为 K 的子数组