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

力扣560.和为K的子数组

文章目录

  • 题目介绍
  • 题解

题目介绍

在这里插入图片描述

题解

前缀和+哈希表(两数之和):
在这里插入图片描述

代码如下:

class Solution {public int subarraySum(int[] nums, int k) {int n = nums.length;int[] s = new int[n + 1];for (int i = 0; i < n; i++) {s[i + 1] = s[i] + nums[i];}int res = 0;Map<Integer, Integer> map = new HashMap<>(n + 1); // 设置容量可以快 2msfor (int he : s) {res += map.getOrDefault(he - k, 0);map.put(he, map.getOrDefault(he, 0) + 1); // map[he]++}return res;}
}

错解:这种方法只适用于数组中所有元素都是正数的情况。 当数组中包含负数时,滑动窗口就不能保证正确性了。 例如,nums = [-1, -1, 1] 和 k = 0,你的算法会漏掉 [-1, -1, 1] 这个子数组。

class Solution {public int subarraySum(int[] nums, int k) {int res = 0, len = nums.length, l = 0, sum = 0;for (int r = 0; r < len; r++) {sum += nums[r];if (sum == k) {res++;}while (sum > k && l <= r) {sum -= nums[l++];if (sum == k) {res++;}}}return res;}
}
http://www.xdnf.cn/news/527779.html

相关文章:

  • FLASHDB API分析
  • 爬虫攻防战:从入门到放弃的完整对抗史与实战解决方案
  • MacOS安装软件后无法启动报错:“已损坏,无法打开,你应该将它移到废纸篓“
  • MySQL企业版免费开启,强先体验
  • 如何使用VCS+XA加密verilog和spice网表
  • JVM的垃圾回收机制
  • 猎板PCB多层层压工艺能力及流程
  • Word2Vec 模型的工作原理
  • c#基础01(.Net介绍)
  • 图漾相机错误码解析(待补充)
  • 51单片机实现流水灯
  • 大数据hadoop小文件处理方案
  • 解锁MySQL性能调优:高级SQL技巧实战指南
  • visual studio code中的插件都是怎么开发的?用的什么编程语言?
  • 深度解析3D模型生成器:基于StyleGAN3与PyTorch3D的多风格生成工具开发实战
  • stm32week16
  • PyMOL结构对齐方式
  • 我的食物信使女友
  • 操作符的详解
  • Google机器学习实践指南(训练与损失函数篇)
  • 避开封禁陷阱:动态IP在爬虫、跨境电商中的落地实践
  • 网络安全之大模型隐私攻击技术
  • 使用 OpenCV 实现 ArUco 码识别与坐标轴绘制
  • OpenCV CUDA 模块中的矩阵算术运算-----在频域中执行两个复数频谱的逐元素乘法的函数mulSpectrums()
  • 耗时十分钟,做了一个 uniapp 灵感泡泡机
  • 【QT】一个界面中嵌入其它界面(三)
  • DriveGenVLM:基于视觉-语言模型的自动驾驶真实世界视频生成
  • 系统安全及应用学习笔记
  • MySQL数据库基础 -- SQL 语句的分类,存储引擎
  • 系统安全应用