本文主要是介绍2022-02-22(560. 和为 K 的子数组),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
class Solution {public int subarraySum(int[] nums, int k) {int count=0;int sum=0;for(int right=0;right<nums.length;++right){sum+=nums[right];if(sum==k){++count;}int temp=sum;for(int left=0;left<right;++left){temp-=nums[left];if(temp==k){++count;}}}return count; }
}
笑死,慢到哭泣。
这题滑动窗口是没法知道什么时候能移动left指针的,num[i]可以为负数;也是没法用动态规划的,k可以为负数。最终用了前缀和这个方法
class Solution {public int subarraySum(int[] nums, int k) {int result=0;Map<Integer,Integer> map=new HashMap<Integer,Integer>();int sum=0;map.put(0, 1); //一定记得这一行,前缀和为0也有一种(即从i=0开始)for(int i=0;i<nums.length;++i){sum+=nums[i];int need=sum-k;if(map.containsKey(need)){result+=map.get(need);}map.put(sum,map.getOrDefault(sum,0)+1);}return result;}
}
这篇关于2022-02-22(560. 和为 K 的子数组)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!