leetcode---前缀和

利用哈希表保存遍历过的元素,需要求其中某一段子数组的题目,则根据条件从map保存的前缀和中找出相关的元素

560. 和为 K 的子数组

思路

class Solution {
    public int subarraySum(int[] nums, int k) {
        //
       Map<Integer,Integer> map = new HashMap<>();
       int sum = 0,co = 0;
       //存储和为0出现了一次,就是在不开始遍历的时候就有
       map.put(0,1);
       for(int i = 0;i<nums.length;i++){
            sum += nums[i];
            //如果前缀和中存在sum-k,则说明存在一段子数组,其和为k
            if(map.containsKey(sum-k)){
                co+=map.get(sum-k);
            }
            //若无,则将当前sum加入前缀和中
            map.put(sum,map.getOrDefault(sum,0)+1);
       }
       return co;
    }
}

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值