当前位置: 首页 > news >正文

前端力扣刷题 | 4:hot100之 子串

560. 和为K的子数组

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

子数组是数组中元素的连续非空序列。

示例:

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

法一:暴力法
var subarraySum = function(nums, k) {let res = 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){res++;}}}return res;
};
法二:前缀和+哈希表
  • 使用前缀和存储累计值,利用 currentSum - k 快速找到满足条件的子数组。
function subarraySum(nums, k) {// 初始化前缀和计数器const prefixSumCount = new Map();prefixSumCount.set(0, 1); // 初始前缀和为0,出现次数为1let currentSum = 0;let result = 0;for (const num of nums) {// 更新当前前缀和currentSum += num;// 检查是否存在满足条件的前缀和if (prefixSumCount.has(currentSum - k)) {result += prefixSumCount.get(currentSum - k);}// 更新前缀和计数器prefixSumCount.set(currentSum,(prefixSumCount.get(currentSum) || 0) + 1);}return result;
}
http://www.lryc.cn/news/528437.html

相关文章:

  • Julia 之 @btime 精准测量详解
  • 【Django教程】用户管理系统
  • 【机器学习】自定义数据集 使用pytorch框架实现逻辑回归并保存模型,然后保存模型后再加载模型进行预测
  • C语言连接Mysql
  • Windows上通过Git Bash激活Anaconda
  • 面试经典150题——图
  • 学习数据结构(1)时间复杂度
  • 项目集成GateWay
  • 【Ubuntu】使用远程桌面协议(RDP)在Windows上远程连接Ubuntu
  • python3+TensorFlow 2.x 基础学习(一)
  • 《活出人生的厚度》
  • 安装 docker 详解
  • 【Rust自学】16.3. 共享状态的并发
  • 开发者交流平台项目部署到阿里云服务器教程
  • 【2024年华为OD机试】 (B卷,100分)- 乘坐保密电梯(JavaScriptJava PythonC/C++)
  • maven的打包插件如何使用
  • solidity高阶 -- 线性继承
  • 国内外大语言模型领域发展现状与预期
  • 【Leetcode 热题 100】416. 分割等和子集
  • C语言------数组从入门到精通
  • 物管系统赋能智慧物业管理提升服务质量与工作效率的新风潮
  • 2024年记 | 凛冬将至
  • MySQL数据导入与导出
  • NoSQL与SQL比较
  • Ceph:关于Ceph 中使用 RADOS 块设备提供块存储的一些笔记整理(12)
  • Android SystemUI——最近任务列表启动(十八)
  • 数据结构课程设计(三)构建决策树
  • 从ChatGPT热潮看智算崛起
  • 基于PyQt设计的智能停车管理系统
  • http的请求体各项解析