leetcode 560. Subarray Sum Equals K 和为 K 的子数组(中等)
一、题目大意
https://leetcode.cn/problems/...
给你一个整数数组 nums 和一个整数 k ,请你统计并返回 该数组中和为 k 的连续子数组的个数 。
【leetcode 560. Subarray Sum Equals K 和为 K 的子数组(中等)】示例 1:
输入:nums = [1,1,1], k = 2示例 2:
输出:2
输入:nums = [1,2,3], k = 3提示:
输出:2
- 1 <= nums.length <= 2 * 104
- -1000 <= nums[i] <= 1000
- -107 <= k <= 107
第二个:求累加和sum[i] = num[0]-num[i-1],这样二层遍历得到(i,j),检查 sum[j]-sum[i]
第三个:定义一个hash来保存sum出现的次数,这样累加sum-k出现的次数就是答案了
三、解题方法 3.1 Java实现
class Solution {
public int subarraySum(int[] nums, int k) {
int ans = 0;
int sum = 0;
Map d = new HashMap<>();
d.put(0, 1);
for (int i = 0;
i < nums.length;
i++) {
sum += nums[i];
ans += d.getOrDefault(sum - k, 0);
d.put(sum, d.getOrDefault(sum, 0) + 1);
}
return ans;
}
}
四、总结小记
- 2022/8/21 得买个头盔了
推荐阅读
- Leetcode 55 - 跳跃游戏
- 436.|436. 寻找右区间--LeetCode_二分
- LeetCode|《LeetCode力扣练习》剑指 Offer 10- I. 斐波那契数列 Java
- leetcode 304. Range Sum Query 2D - Immutable 二维区域和检索 - 矩阵不可变(中等)
- C语言|【九日集训】《LeetCode刷题报告》题解内容 Ⅳ
- leetcode|leetcode 105. 从前序与中序遍历序列构造二叉树 javascript
- leetcode 128. Longest Consecutive Sequence 最长连续序列(中等)
- 算法面试冲刺|Leetcode 算法面试冲刺 热题 HOT 100 刷题(337 338 347 394 399)(六十八)
- Leetcode刷题复习|Leetcode 刷题必须Review 十七 Lintcode(423 492 541 421 575)
- leetcode|leetcode 739. Daily Temperatures 每日温度(中等)