【前缀和】560. 和为 K 的子数组

560. 和为 K 的子数组

解题思路

  • 创建一个前缀和数组 preSum,其长度比原数组 nums 多 1。preSum[i] 表示 nums 中前 i 个元素的和。
  • 通过遍历 nums 数组,计算前缀和数组 preSum。
    • 在嵌套的两个循环中,对所有可能的子数组进行穷举:
    • 外层循环从 1 到 n(n 是数组长度),代表子数组的结束位置。
    • 内层循环从 0 到 i-1,代表子数组的起始位置。
  • 在每一对起始位置和结束位置上,通过计算前缀和数组中的差值,判断子数组的和是否等于 k。
  • 如果等于 k,则将结果计数器 ans 加一。
java 复制代码
class Solution {
    public int subarraySum(int[] nums, int k) {
        // 前缀和数组
        int n = nums.length;
        int[] preSum = new int[n + 1]; 
        preSum[0] = 0;

        for(int i = 0; i < n; i++){
            preSum[i + 1] = preSum[i] + nums[i];
        }

        // preSum[i] 代表nums[0...i - 1]的和

        int ans = 0;
        // 穷举所有子数组
        for(int i = 1; i <= n; i++){
            for(int j = 0; j < i; j++){
                if(preSum[i] - preSum[j] == k){
                    ans++;
                }
            }
        }


        return ans;
    }
}
相关推荐
leaves falling3 分钟前
c语言自定义类型深度解析:联合(Union)与枚举(Enum)
c语言·开发语言·算法
期末考复习中,蓝桥杯都没时间学了20 分钟前
力扣刷题记录2
算法·leetcode·职场和发展
高洁0127 分钟前
知识图谱如何结合 RAG实现更精确的知识问答
人工智能·算法·机器学习·数据挖掘·知识图谱
爱喝可乐的老王35 分钟前
机器学习监督学习模型----KNN
人工智能·算法·机器学习
闪电麦坤9537 分钟前
Leecode热题100:环形链表(链表)
数据结构·链表·leecode
WBluuue39 分钟前
AtCoder Beginner Contest 441(ABCDEF)
c++·算法
Remember_99343 分钟前
【LeetCode精选算法】双指针专题一
java·数据结构·算法·leetcode
多米Domi01144 分钟前
0x3f 第36天 外卖8,9,树
数据结构·python·算法·leetcode
jonyleek1 小时前
开源APS排产系统,出货计划如何成为企业降本增效的关键?
算法·开源·私有化部署·软件开发·生产排产·aps排产系统
hetao17338371 小时前
2026-01-16~19 hetao1733837 的刷题笔记
c++·笔记·算法