560. 和为K的子数组
程序员文章站
2022-04-17 13:22:02
...
#560. 和为K的子数组
难度:中等
题目描述
解题思路
1、前缀和+哈希表 O(n)
public int subarraySum(int[] nums, int k) {
int sum = 0,re = 0;
HashMap<Integer,Integer> map=new HashMap<>();
map.put(0,1); //初始化和为0 1次
for(int num:nums){
sum += num;
if(map.containsKey(sum-k)){ //如果存在子序和为sum-k
re += map.get(sum-k);
}
map.put(sum,map.getOrDefault(sum,0)+1);
}
return re;
}
2、普通O(n2)解法
public int subarraySum(int[] nums, int k) {
int n =nums.length;
int sum = 0,re = 0;
for (int i = 0; i < n; i++) {
sum = 0;
for (int j = i; j < n; j++) {
sum += nums[j];
if(sum == k) {
re++;
}
}
}
return re;
}
推荐阅读
-
算法题:给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
-
不能使用for循环,传入n和m,生成一个长度为n,每一项都是m的数组
-
程序员代码面试指南 python实现(第一章 栈和队列 :最大值减去最小值小于或等于num的子数组数量)
-
LeetCode 1 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
-
编写计算并输出一个3*3阶矩阵对角线元素的和。 程序运行结果示例: 请输入数组元素:(3*3)↙ 1 2 3 4 5 6 7 8 9↙ ↙ 数组为:cqupt
-
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标。
-
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的 两个 整数。 你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素
-
两数之和:给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。...
-
c语言和Java语言实现,两数之和:给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
-
[每日一题]给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。