美文网首页
Subarray Sum Equals k

Subarray Sum Equals k

作者: Katakuly | 来源:发表于2018-10-06 15:36 被阅读0次

    题目描述:
    给定整数数组和整数k,你需要找到总和等于k的连续子数组的总个数。

    输入描述:nums = [1,1,1], k = 2
    输出描述:2
    说明:1.数组的长度在范围[1, 20000 ]中;
    2.数组中的数字范围是[-1000, 1000 ],整数k的范围是[-1E7,1E7]

    分析:
    如果我们知道sum[0,i-1]和sum[0,j],那么我们就能很轻易得到sum[i,j]的值,这里采用HashMap数据结构保存已经求过和的sum[0,i-1]。

    代码:

    class Solution {
        public int subarraySum(int[] nums, int k) {
            int sum=0;
            int ans=0;
            HashMap<Integer,Integer> map=new HashMap<>();
            map.put(0,1);
            for(int i=0;i<nums.length;i++){
                sum+=nums[i];
                if(map.containsKey(sum-k)){
                    ans+=map.get(sum-k);
                }
                map.put(sum,map.getOrDefault(sum,0)+1);
            }
            return ans;
        }
    }
    

    相关文章

      网友评论

          本文标题:Subarray Sum Equals k

          本文链接:https://www.haomeiwen.com/subject/rbjhaftx.html