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

力扣-和为K的子数组

题目-和为 K 的子数组

在这里插入图片描述

解法1:两层for循环

public class T560 {public static int subarraySum(int[] nums, int k) {int res = 0;for (int i = 0; i < nums.length; i++) {int tempSum = 0;for (int j = i; j < nums.length; j++) {tempSum += nums[j];if (tempSum == k) {res++;}}}return res;}public static void main(String[] args) {int[] nums = {1, -1, 0};int k = 0;System.out.println(subarraySum(nums, k));}
}

解法2:前缀和+哈希

  • 前缀和:前缀和数组 sum[i] 表示从数组起点到位置 i 的元素之和。
  • 哈希表:使用哈希表记录前缀和出现的次数,这样在遍历数组时可以快速找到符合条件的子数组。
public class T560 {public static int subarraySum(int[] nums, int k) {int res = 0;Map<Integer, Integer> map = new HashMap<>();map.put(0, 1);// int currentSum = 0;for (int i = 0; i < nums.length; i++) {//sum[i...j]=sum[j]-sum[i-1]currentSum += nums[i];if (map.containsKey(currentSum - k)) {res += map.get(currentSum - k);}map.put(currentSum, map.getOrDefault(currentSum, 0) + 1);}return res;}public static void main(String[] args) {int[] nums = {1, -1, 0};int k = 0;System.out.println(subarraySum(nums, k));}
}

详细解释 currentSum - k
设 currentSum 表示当前的前缀和,也就是从数组起点到当前位置的元素之和。我们希望找到一个子数组,使得这个子数组的和等于 k。假设我们当前遍历到数组位置 j,当前的前缀和为 currentSum。

如果存在某个位置 i 使得从 i 到 j 的子数组和等于 k,根据前缀和的定义,有:sum[j]-sum[i-1]=k 其中sum[j]就是currentSum

变形一下:sum[j]-sum[i-1]=k ➡️sum[j]-k=sum[i-1]➡️currentSum-k=sum[i-1]。(因为已知k,不知道sum[i-1] ,所以把k移到等号左边,看map中是否包含sum[i-1],包含则说明ij的和为k


为什么是res += map.get(currentSum - k);而不是res += 1;因为可能存在多个前缀和为currentSum - k。搞懂map存的什么

相关文章:

力扣-和为K的子数组

题目-和为 K 的子数组 解法1&#xff1a;两层for循环 public class T560 {public static int subarraySum(int[] nums, int k) {int res 0;for (int i 0; i < nums.length; i) {int tempSum 0;for (int j i; j < nums.length; j) {tempSum nums[j];if (tempSum k)…...

写一个坏越个人天地(五)

昨天整了半天天气api还是有点小问题。一天50次真的不够我test的。一气之下还是全删了改用高德api。把接口写在了后端&#xff0c;这样我启动界面后就可以直接通过接口在后端嘎嘎处理逻辑了。再整理返回就好了 不过高德api好像获取地址的概率好低&#xff0c;于是我还是整了个获…...

步步精科技诚邀您参加2024慕尼黑上海电子展

尊敬的客户&#xff1a; 我们诚挚地邀请您参加即将于2024年7月8日至7月10日在上海新国际博览中心举办的2024慕尼黑上海电子展&#xff08;electronica China&#xff09;。此次展会汇聚了国内外优秀企业&#xff0c;展示从元器件到系统集成方案的完整产品链&#xff0c;为各行…...

Spring Boot中如何配置和使用多数据源

Spring Boot中如何配置和使用多数据源 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;今天&#xff0c;我们将深入探讨如何在Spring Boot应用中配置和使用多数据…...

vue3 【提效】全局布局 vite-plugin-vue-layouts 实用教程

一个常见的需求是&#xff0c;同模块的若干页面需要使用同一种布局&#xff0c;比如俱乐部相关的页面的顶部需要展示俱乐部的名称&#xff0c;其他页面顶部需要展示网站名称。 通常实现的方法是&#xff0c;将俱乐部的名称和网站名称定义成公共组件&#xff0c;在每个页面都书…...

前端性能优化-实测

PageSpeed Insights 性能测试 今天测试网站性能的时候发现一个问题&#xff0c;一个h2标签内容为什么会占据这么长的渲染时间&#xff0c;甚至有阶段测到占据了7000多毫秒&#xff0c;使用了很多方法都不能解决&#xff0c;包括了修改标签&#xff0c;样式大小等&#xff0c;当…...

【Linux】初识操作系统

一、冯•诺依曼体系结构 在学习操作系统之前&#xff0c;我们先来认识一下冯•诺依曼体系结构&#xff0c;我们常见的计算机&#xff0c;如笔记本。我们不常见的计算机&#xff0c;如服务器&#xff0c;大部分都遵守冯诺依曼体系。 截至目前&#xff0c;我们所认识的计算机&am…...

等保2.0中,如何确保云服务提供商的数据主权合规?

等保2.0中云服务提供商的数据主权合规措施 等保2.0&#xff08;网络安全等级保护2.0&#xff09;是中国的网络安全标准&#xff0c;旨在确保云服务提供商的数据主权合规。以下是一些关键措施和要求&#xff1a; 数据地理位置要求&#xff1a;云服务提供商必须保证所有基础设施位…...

【AI大模型】Transformers大模型库(十四):Datasets Viewer

目录 一、引言 二、Datasets Viewer数据查看器 2.1 概述 2.2 示例 三、总结 一、引言 这里的Transformers指的是huggingface开发的大模型库&#xff0c;为huggingface上数以万计的预训练大模型提供预测、训练等服务。 &#x1f917; Transformers 提供了数以千计的预训练…...

一个例子理解傅里叶变换的计算过程

假设我们有一个简单的信号&#xff0c;由两个不同频率的正弦波组成&#xff0c;我们希望通过傅里叶变换来分析其频谱。 示例信号 假设我们有一个信号 &#xff1a; 这个信号由两个频率成分组成&#xff1a;一个50 Hz的正弦波和一个120 Hz的正弦波&#xff0c;后者的振幅是前者…...

2-2到2-4

计算出所有人的平均年龄&#xff1a; val lines sc.textFile("/root/data/scala/people/page.txt") val count lines.count() val total lines.map(line > line.split(" ")(1)).map(t>t.trim.toInt).collect().reduce((a,b)>ab) val avgAge …...

Vatee万腾平台:一站式智慧服务,让生活更美好

在数字化浪潮席卷全球的今天&#xff0c;我们生活的方方面面都在经历着前所未有的变革。Vatee万腾平台凭借其一站式智慧服务&#xff0c;正成为推动这场变革的重要力量&#xff0c;让我们的生活变得更加美好。 Vatee万腾平台&#xff0c;作为一家专注于提供智慧服务的领军企业&…...

如何选择一个好的汽车油封制造商?

汽车的每一个零部件都至关重要&#xff0c;其中&#xff0c;油封的作用更是不可忽视。它们确保了液体和气体在汽车内部的正确流动&#xff0c;防止了泄漏。因此&#xff0c;选择一个可靠的汽车油封制造商就显得尤为重要。那么&#xff0c;我们应该如何做出明智的选择呢? 首先…...

构建高效的电商返利系统:架构设计与实现

构建高效的电商返利系统&#xff1a;架构设计与实现 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 电商返利系统作为连接消费者和商家的桥梁&#xff0c;能够…...

如何使用 Python 交互式解释器?

1. 什么是Python交互式解释器&#xff1f; Python交互式解释器是一种REPL&#xff08;Read-Eval-Print Loop&#xff09;环境。它会读取用户输入的代码&#xff0c;执行代码&#xff0c;并输出结果&#xff0c;随后等待下一个用户输入。这种交互方式使得Python非常适合快速原型…...

C++日期类的完整实现,以及this指针的const修饰等的介绍

文章目录 前言一、日期类的实现二、this指针的const修饰总结 前言 C日期类的完整实现&#xff0c;以及this指针的const修饰等的介绍 一、日期类的实现 // Date.h #pragma once#include <iostream> using namespace std;#include <assert.h>class Date {// 友元函…...

缓冲区溢出

本文作者&#xff1a;杉木涂鸦智能安全实验室 前置知识点 栈 栈&#xff08;Stack&#xff09;是计算机中的一种数据结构&#xff0c;用于存储临时数据。它的特点是后入先出&#xff08;LIFO&#xff09;&#xff0c;只能在栈顶添加或删除数据。在程序中&#xff0c;栈被用于…...

step7:“模拟量界面”逻辑

文章目录 文章介绍效果图AnalogPage.qml结构图调用 SerialPortHandler.sendData(message); serialporthandler.cpp 文章介绍 之前的6步实现了案例MF的界面设计和串口界面的逻辑设计&#xff0c;本文将实现模拟量界面的逻辑设计 新增功能&#xff1a; 1&#xff09;弹出提示框 …...

Arduino - 继电器

Arduino - 继电器 In a previous tutorial, we have learned how to turn on/off an LED. In this tutorial, we are going to learn how to turn on/off some kind of devices that use the high voltage power supply(such as a light bulb, fan, electromagnetic lock, lin…...

状态压缩DP——AcWing 327. 玉米田

状态压缩DP 定义 状态压缩 DP 是一种通过二进制压缩状态的动态规划算法。它通过使用位运算来加速状态的转移和计算&#xff0c;从而提高算法的效率。 注意事项 数据范围&#xff1a;状态压缩 DP 通常适用于数据范围较小的问题&#xff0c;因为它需要使用二进制来表示状态&a…...

OpenClaw技能扩展指南:为GLM-4.7-Flash添加自定义功能

OpenClaw技能扩展指南&#xff1a;为GLM-4.7-Flash添加自定义功能 1. 为什么需要自定义技能 去年冬天&#xff0c;当我第一次尝试用OpenClaw自动整理电脑上的照片时&#xff0c;发现现有的技能库无法满足我的特殊需求——按照拍摄地点和人物自动分类。这让我意识到&#xff0…...

AI 自动获客系统正在重构企业线索获取方式

在数字化营销持续深化的当下&#xff0c;企业获客成本逐年攀升&#xff0c;传统 “广撒网” 的线索获取模式早已难以为继。销售团队大量时间耗费在无效线索筛选上&#xff0c;真正用于精准跟进、成交的时间不足两成&#xff0c;人力与投入的失衡让企业陷入增长内耗。而 AI 自动…...

C#频谱图振动传感器温度传感器数据采集绘制频谱图和时域图,并存储数据库存储时间200ms左右

C#频谱图振动传感器温度传感器数据采集绘制频谱图和时域图&#xff0c;并存储数据库存储时间200ms左右&#xff0c;可以进行历史频谱图和时域图回放&#xff0c;可以求的最大值并设置阈值报警可以导出报警最近在搞工业设备监控系统的时候&#xff0c;需要实时采集振动和温度数据…...

域环境基础知识

Active Directory&#xff08;AD&#xff09; 域控制器功能&#xff1a; 集中管理所有域用户统一身份认证组策略分发资源访问控制 Windows Server域环境搭建 推荐版本&#xff1a; Windows Server 2003Windows Server 2008Windows Server 2012 域环境组成&#xff1a; 域控制器…...

Adafruit DPS310传感器驱动库深度解析与嵌入式实践

1. Adafruit DPS310 压力传感器驱动库深度解析与工程实践 1.1 项目定位与硬件基础 Adafruit DPS310 是一款高精度、低功耗的数字气压/温度传感器&#xff0c;基于 Infineon&#xff08;原 Bosch Sensortec&#xff09;DPS310 芯片设计。该芯片采用 MEMS 技术&#xff0c;集成…...

OpenClaw智能截图:nanobot自动识别图片中的文字信息

OpenClaw智能截图&#xff1a;nanobot自动识别图片中的文字信息 1. 为什么需要智能截图工具 在日常工作和学习中&#xff0c;我们经常遇到需要从图片中提取文字的场景。比如截取网页上的技术文档片段、保存会议白板上的讨论要点、或者整理纸质书籍中的关键段落。传统做法是手…...

Uvicorn性能调优:异步I/O模型选择与配置指南

Uvicorn性能调优&#xff1a;异步I/O模型选择与配置指南 【免费下载链接】uvicorn An ASGI web server, for Python. &#x1f984; 项目地址: https://gitcode.com/GitHub_Trending/uv/uvicorn Uvicorn作为Python生态中最受欢迎的ASGI服务器&#xff0c;其性能表现直接…...

美团、腾讯、字节怎么选?3个真实案例告诉你答案

美团、腾讯、字节怎么选&#xff1f;3个真实案例告诉你答案 2026校招季&#xff0c;三个朋友的不同选择 大厂直通车-校招大礼包&#xff1a;入口入口 写在前面 2026届秋招结束了。 我的三个朋友小A、小B、小C都拿到了心仪的offer。有意思的是&#xff0c;他们分别选了字节、腾…...

Stable Diffusion XL 1.0开源大模型教程:灵感画廊app.py核心逻辑解读

Stable Diffusion XL 1.0开源大模型教程&#xff1a;灵感画廊app.py核心逻辑解读 “见微知著&#xff0c;凝光成影。将梦境的碎片&#xff0c;凝结为永恒的视觉诗篇。” 如果你对AI绘画感兴趣&#xff0c;一定听说过Stable Diffusion XL 1.0这个强大的开源模型。但面对复杂的参…...

不止于仿真:用COMSOL LiveLink玩转超声相控阵动态聚焦与参数化扫描

超越静态仿真&#xff1a;COMSOL LiveLink在超声相控阵动态聚焦中的高阶应用 当超声相控阵技术遇上COMSOL的多物理场仿真能力&#xff0c;工程师们便获得了一把打开声波精准操控之门的钥匙。不同于传统静态仿真&#xff0c;动态聚焦与参数化扫描技术让声场控制如同探照灯般灵活…...