算法:给你一个整数数组 nums 和一个整数k,请你统计并返回该数组中和为 k 的子数组的个数

Java面试题目录

算法:给你一个整数数组 nums 和一个整数k,请你统计并返回该数组中和为 k 的子数组的个数

使用前缀和来实现。在保存累加和的数组preSum中,找坐标大的元素与坐标小的元素差值正好为k的个数。

leecode地址:. - 力扣(LeetCode)

直接在力扣找了个写好的答案。

java 复制代码
public class Solution {

    public int subarraySum(int[] nums, int k) {
        int len = nums.length;
        // 计算前缀和数组
        int[] preSum = new int[len + 1];
        preSum[0] = 0;
        for (int i = 0; i < len; i++) {
            preSum[i + 1] = preSum[i] + nums[i];
        }

        int count = 0;
        for (int left = 0; left < len; left++) {
            for (int right = left; right < len; right++) {
                // 区间和 [left..right],注意下标偏移
                if (preSum[right + 1] - preSum[left] == k) {
                    count++;
                }
            }
        }
        return count;
    }
}

作者:liweiwei1419

链接:https://leetcode.cn/problems/subarray-sum-equals-k/solutions/247577/bao-li-jie-fa-qian-zhui-he-qian-zhui-he-you-hua-ja/

来源:力扣(LeetCode)

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

相关推荐
Yzzz-F几秒前
2025 ICPC武汉邀请赛 G [根号分治 容斥原理+DP]
算法
abant25 分钟前
leetcode 114 二叉树变链表
算法·leetcode·链表
tankeven7 分钟前
HJ165 小红的优惠券
c++·算法
前端Hardy8 分钟前
大厂都在偷偷用的 Cursor Rules 封装!告别重复 Prompt,AI 编程效率翻倍
前端·javascript·面试
Aktx20FNz9 分钟前
一文学习 Spring AOP 源码全过程
java·学习·spring
Nyarlathotep011312 分钟前
ThreadLocal
java·后端
先积累问题,再逐次解决24 分钟前
快速幂优美算法
算法
前端Hardy30 分钟前
Cursor Rules 完全指南(2026 最新版)
前端·javascript·面试
XiYang-DING1 小时前
【LeetCode】 225.用队列实现栈
算法·leetcode·职场和发展