自学内容网 自学内容网

前缀和的一些题目

和为k的数组

public int subarraySum(int[] nums, int k) {
     int pre = 0;
     int count = 0;
     //一个哈希表存储当前的前缀和
     HashMap<Integer,Integer> mp = new HashMap<>();
     mp.put(0,1);
     for (int i = 0; i < nums.length; i++) {
         //当前的前缀和
         pre += nums[i];
         //如果之前存在已需要的哈希和等于pre-k,则说明存在和为k的子数组
         if (mp.containsKey(pre - k)){
             count += mp.get(pre - k);
         }
         mp.put(pre, mp.getOrDefault(pre,0)+1);
     }
     return count;
 }

原文地址:https://blog.csdn.net/weixin_45332508/article/details/142879368

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!