欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 新车 > Leetcode 560 和为 K 的子数组

Leetcode 560 和为 K 的子数组

2025/4/19 8:20:15 来源:https://blog.csdn.net/zjshuster/article/details/139965659  浏览:    关键词:Leetcode 560 和为 K 的子数组

题目描述

给你一个整数数组 nums 和一个整数 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

解题思路

本题是找出所有中和为 k 的子数组的个数,子数组的和可以用前缀和来表示,因此是一个前缀和的问题

代码实现

class Solution {public int subarraySum(int[] nums, int k) {int res = 0;int[] preSum = new int[nums.length];preSum[0] = nums[0];for (int i = 1; i < nums.length; i++) {preSum[i] = preSum[i -1] +nums[i];}for (int i = 0; i < preSum.length; i++) {if (preSum[i] == k) {res += 1;}for (int j = 0; j < i; j++) {if (preSum[i] - preSum[j] == k) {res += 1;}}}return res;}
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词