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

LeetCode刷题-top100(和为 K 的子数组)

560. 和为 K 的子数组

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

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

示例 1:

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

输出:2

示例 2:

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

输出:2

代码:双指针+两次循环,没有超时,差点

class Solution {public int subarraySum(int[] nums, int k) {int n = nums.length;int count = 0;for (int left = 0; left < n; left++) {int sum = 0;for (int right = left; right < n; right++) {sum += nums[right];if (sum == k) {count++;}// 如果数组包含负数,不能提前break// 因为后续可能有负数抵消前面的正数}}return count;}
}

最优解:哈希表+前缀和(前缀和总和是连续的所以存在pre-k,就一定有对应的连续数组)

import java.util.HashMap;
import java.util.Map;class Solution {public int subarraySum(int[] nums, int k) {// 哈希表:key-前缀和,value-该前缀和出现的次数Map<Integer, Integer> prefixSum = new HashMap<>();// 初始化:前缀和为0出现1次(用于处理从数组开头开始的子数组)// 例如:当sum == k时,sum - k = 0需要能被找到prefixSum.put(0, 1); //put不是pushint sum = 0;    // 当前前缀和(从第0个元素到当前元素的累加和)int count = 0;   // 统计满足条件的子数组数量for (int num : nums) {// 1. 计算当前前缀和sum += num;// 2. 检查是否存在前缀和等于(sum - k)// 如果存在,说明从该前缀和的位置到当前位置的子数组和为k// sum[0...j] - sum[0...i] = sum[i+1...j] = kif (prefixSum.containsKey(sum - k)) {// 累加该前缀和出现的次数(可能有多个位置满足)count += prefixSum.get(sum - k);}// 3. 更新当前前缀和的出现次数// 如果sum已存在,则次数+1;否则初始化为1prefixSum.put(sum, prefixSum.getOrDefault(sum, 0) + 1);}return count;}
}

http://www.lryc.cn/news/575547.html

相关文章:

  • 关于物联网的基础知识(一)
  • zabbix监控Centos 服务器
  • uni-app的UTS插件开发,调用鸿蒙原生API
  • 闲庭信步使用SV搭建图像测试平台:第十三课——谈谈SV的数据类型
  • 微信小程序<rich-text>支持里面图片点击放大
  • react-嵌套路由 二级路由
  • python 爬虫 下载视频
  • C++ 中 enum 语法
  • 【模拟】N 字形变换(medium)
  • 2025最新Tomcat 安装教程(保姆级,图文讲解,带安装包)
  • Django 零基础起步:开发你的网站第一步
  • 供应链管理:供应链计划主要计算公式/方法
  • 独立开发还能做吗
  • 用户统计-01.需求分析和设计
  • 机器学习基础:概念、算法与实践入门
  • 酒店智能门锁系统常见问题解决方法——东方仙盟
  • MyBatis-Plus - 条件构造器Wrapper
  • Socket 编程 TCP
  • Linux 和 Windows 服务器:哪一个更适合您的业务需求?
  • 通信网络编程4.0——JAVA
  • Java+LangChain实战入门:深度剖析开发大语言模型应用!
  • ArrayList和LinkedList详解
  • WPF 实现自定义弹窗输入功能
  • Spring Boot 项目中同时使用 Swagger 和 Javadoc 的完整指南
  • Redis核心知识详解:从全局命令到高级数据结构
  • 数据结构-第二节-堆栈与队列
  • python打卡day56@浙大疏锦行
  • 学习昇腾开发的第9天--在Ubuntu下安装ffmpeg4.2.11
  • php项目部署----------酒店项目
  • Docker数据管理——AI教你学Docker