力扣热门100题之和为k的子数组【中等】

题目描述

给你一个整数数组 nums 和一个整数 k ,请你统计并返回 该数组中和为 k 的连续子数组的个数 。

示例 1:

输入:nums = [1,1,1], k = 2

输出:2

示例 2:

输入:nums = [1,2,3], k = 3

输出:2

提示:

解法1 暴力破解

js 复制代码
/**
 * @param {number[]} nums
 * @param {number} k
 * @return {number}
 */
var subarraySum = function(nums, k) {
    let count=0;
    for(let i=0;i<nums.length;i++){
        let sum=0;
        for(let j=i;j>=0;j--){
            sum+=nums[j];
            if(sum==k){
                count++;
            }
        }
    }
    return count;
};

执行情况

解法2 前缀和

js 复制代码
/**
 * @param {number[]} nums
 * @param {number} k
 * @return {number}
 */
var subarraySum = function(nums, k) {
    let count=0;
    const pre=[]
    let sum=0;
    for(let i=0;i<nums.length;i++){
        sum+=nums[i];
        pre[i]=sum;
    }
    for(let i=0;i<pre.length;i++){
            if(pre[i]==k)count++;
            for(let j=0;j<i;j++){
                if(pre[i]-pre[j]==k){
                    count++;
                }
            }
        
    }
    return count;
};

执行情况

前缀和+哈希

js 复制代码
/**
 * @param {number[]} nums
 * @param {number} k
 * @return {number}
 */
var subarraySum = function(nums, k) {
    let count=0;
    let sum=0;
    const data=new Map()
    data.set(0,1);
    for(let i=0;i<nums.length;i++){
        sum+=nums[i];
        if(data.has(sum-k)){
            count+=data.get(sum-k);
        }
        data.set(sum,data.has(sum)?data.get(sum)+1:1);
    }
    return count;
};

执行情况

相关推荐
码农水水23 分钟前
中国电网Java面试被问:流批一体架构的实现和状态管理
java·c语言·开发语言·面试·职场和发展·架构·kafka
a31582380635 分钟前
大语言模型应用开发技术要求
算法·大语言模型·应用开发
倦王37 分钟前
力扣日刷26112
算法·leetcode·职场和发展
liu****1 小时前
能源之星案例
人工智能·python·算法·机器学习·能源
程序员三藏1 小时前
软件测试环境搭建及测试过程
自动化测试·软件测试·python·功能测试·测试工具·职场和发展·测试用例
CCPC不拿奖不改名1 小时前
数据处理与分析:pandas基础+面试习题
开发语言·数据结构·python·面试·职场和发展·pandas
2501_901147831 小时前
环形房屋打家劫舍算法
考研·算法·leetcode·高考
智驱力人工智能1 小时前
守护矿山动脉 矿山皮带跑偏AI识别系统的工程化实践与价值 皮带偏离检测 皮带状态异常检测 多模态皮带偏离监测系统
大数据·人工智能·opencv·算法·安全·yolo·边缘计算
智驱力人工智能1 小时前
构筑安全红线 发电站旋转设备停机合规监测的视觉分析技术与应用 旋转设备停机检测 旋转设备异常检测 设备停机AI行为建模
人工智能·opencv·算法·安全·目标检测·计算机视觉·边缘计算
程序员杰哥1 小时前
2026软件测试面试宝典(含答案+文档)
自动化测试·软件测试·python·测试工具·面试·职场和发展·测试用例