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

算法:560.和为k的子数组

题目

链接:leetcode链接

在这里插入图片描述
在这里插入图片描述

思路分析(前缀和)

注意:我们前面讲过滑动窗口可以处理子数组、子串等问题,
但是在这道题目里面注意数据范围 -1000 <= nums[i] <= 1000
nums[i]可正可负,区间的和没有单调性,使用不了滑动窗口

这里带来新的解决方法
这道题目也是要求我们求一段连续区间的和,我们的前缀和算法也能帮助我们做到 [l , r] = dp[r] - dp[l - 1]

所以,我们求区间和为k,也就是,k = sum[r] - sum[l - 1]

抽象来看,存在一个区间的和为k,那么在==[0 , i - 1]==就存在一个前缀和为sum - k
我们只需要去寻找这个sum - k的前缀和即可。

在这里插入图片描述

思考一下,我们真的需要另外去开一个前缀和数组吗?
如果开前缀和数组的话,那也是需要遍历前缀和数组,以每一个下标为终点当sum去找sum - k,时间复杂度依旧是O(N2),这和暴力有啥区别呢?

所以是不需要开前缀和数组的,
我们只需要sum - k的个数,为什么不使用hash表呢?
我们每次算到一个新的前缀和,去hash表中查找sum - k的个数,不就可以解决了嘛

此时的sum前缀和,采用滚动数组的方式,利用一个变量就可以统计所有的前缀和了(这里后续不会使用,所以前缀和并不用存起来,所以并不需要实质地开一个数组)

细节:
(1)我们什么时候把前缀和插入hash表
我们要在[0 , i - 1]中查找hash表,也就是要先查找,再插入,
否则就是在[0,i]中查找
在[0,i]中查找的话,如果k是0的话,就会出现bug,
比如只有一个元素1,插入hash表后
sum - k还是等于1,但是我们要找的是和为0,
在hash里面找到了1,就返回1,但是实际上是没有符合要求的子数组

(2)如果[0,i]的前缀和恰好等于k怎么办呢?
此时我们需要特殊处理,
这种情况下,sum - k等于0,此时的对应的sum - k区间不存在,这种情况要特殊处理一下,
在创建hash表的时候,额外把hash[0] = 1,来提前应对这种情况

代码

int subarraySum(vector<int>& nums, int k) {int sum = 0;int ret = 0;unordered_map<int,int> hash;hash[0]++;for(auto & e:nums){sum += e;int check = sum - k;if(hash.count(check)) ret += hash[check];hash[sum]++;}return ret;}

相关文章:

算法:560.和为k的子数组

题目 链接:leetcode链接 思路分析&#xff08;前缀和&#xff09; 注意&#xff1a;我们前面讲过滑动窗口可以处理子数组、子串等问题&#xff0c; 但是在这道题目里面注意数据范围 -1000 < nums[i] < 1000 nums[i]可正可负&#xff0c;区间的和没有单调性&#xff0c;使…...

C++之list(2)

list(2) list的迭代器 const迭代器 根据我们之前学过的知识&#xff1a; const int*p1;//修饰的是指向的内容 int *const p2;//修饰的是迭代器本身我们写const迭代器&#xff0c;期望的是指向的内容不能修改。 所以更期望写上面p1的形式 const迭代器与普通迭代器的不同点在于…...

React Componet类组件详解(老项目)

React类组件是通过创建class继承React.Component来创建的&#xff0c;是React中用于构建用户界面的重要部分。以下是对React类组件的详细解释&#xff1a; 一、定义与基本结构 类组件使用ES6的class语法定义&#xff0c;并继承自React.Component。它们具有更复杂的功能&#…...

位运算题目-Java实现-LeetCode题解:判断字符是否唯一-丢失的数字-两整数之和-只出现一次的数字 II-消失的两个数字

这里是Themberfue 上一篇文章讲完了常见位运算的技巧以及总结 那么本章则通过五道题来运用这些技巧 判定字符是否唯一 题目解析 本题要求判断给定字符串中的字符是否唯一&#xff0c;也就是每个字符是否只出现一次 算法讲解 本题用哈希表遍历每一个字符也可以解决 如果这题使…...

复合泊松过程

复合泊松过程的均值、方差与特征函数 复合泊松过程的定义 复合泊松过程 ( Y(t) ) 是一种常见的随机过程&#xff0c;通常定义为&#xff1a; Y ( t ) ∑ k 1 N ( t ) X k Y(t) \sum_{k1}^{N(t)} X_k Y(t)k1∑N(t)​Xk​ 其中&#xff1a; ( N(t) ) 是一个强度为 ( \lambd…...

[week1] newstar ctf ezAndroidStudy

本题主要考查对 APK 基本结构的掌握 查看 AndroidManifest.xml 可以发现 activity 只有 Homo 和 MainActivity 我们用 Jadx 打开 work.pangbai.ezandroidstudy.Homo 就可以获得 flag1 打开 resources.arsc/res/value/string.xml 搜索 flag2 即可 按描述到 /layout/activity_ma…...

TCP——Socket

应用进程只借助Socket API发和收但是不关心他是怎么进行传和收的 数据结构 图示Socket连接 捆绑属于隐式捆绑...

OpenStack服务Swift重启失效(已解决)

案例分析Swift重启失效 1. 报错详情 在重新启动 VMware 虚拟机后&#xff0c;我们发现 OpenStack 的 Swift 服务出现了 503 Service Unavailable 错误。经过排查&#xff0c;问题根源在于 Swift 服务所使用的存储挂载是临时挂载&#xff0c;而非永久挂载。 Swift 服务依赖于…...

System.Text.Json类库进行json转化时ValueKind:Object问题

当你的使用的Json库是System.Text.Json&#xff0c;而不是Newtonsoft.Json库的时候&#xff0c;你可能遇到以下问题及其解决办法。通常的解决办法是进行一些对应的配置。此外就需要根据情况使用自定义转换器实现你的需求。以下是通常遇到的使用自定义转换器解决的例子: Q1.当遇…...

免费Excel工作表同类数据合并工具

下载地址&#xff1a;https://pan.quark.cn/s/81b1aeb45e4c 在 Excel 表格里&#xff0c;当我们试图手动将多行同类数据合并为一行时&#xff0c;会遭遇诸多棘手的困难以及繁杂的操作流程。在确定哪些数据属于可合并的同类数据时&#xff0c;单纯依靠人工进行对比&#xff0c;极…...

如何在算家云搭建Video-Infinity(视频生成)

一、模型介绍 Video-Infinity是一个先进的视频生成模型&#xff0c;使用多个 GPU 快速生成长视频&#xff0c;无需额外训练。它能够基于用户提供的文本或图片提示&#xff0c;创造出高质量、多样化的视频内容。 二、模型搭建流程 1.大模型 Video-Infinity 一键使用 基础环境…...

LeetCode搜索插入位置

题目描述 给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并返回其索引。如果目标值不存在于数组中&#xff0c;返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 示例 1: 输入: nums [1,3,5,6], target 5 输出: 2 …...

UE5学习笔记24-添加武器弹药

一、给角色的武器添加弹药 1.创建界面&#xff0c;根据笔记23的界面中添加 2.绑定界面控件 UPROPERTY(meta (Bindwidget))UTextBlock* WeaponAmmoAmount;UPROPERTY(meta (Bindwidget))UTextBlock* CarriedAmmoAmount; 3.添加武器类型枚举 3.1创建武器类型枚举头文件 3.2创建文…...

限制游客在wordpress某分类下阅读文章的数量

在WordPress中实现某个分类下的内容限制游客只能阅读前5篇文章&#xff0c;注册用户可以阅读更多文章的功能&#xff0c;可以通过以下步骤来完成&#xff1a; 1. 安装和激活插件 首先&#xff0c;你可以使用一个插件来简化这个过程。一个常用的插件是 “MemberPress” 或 “R…...

Oracle云主机申请和使用教程:从注册到SSH连接的全过程

今天我要和大家分享如何成功申请Oracle云主机,并进行基本的配置和使用。我知道很多同行的朋友在申请Oracle云主机时都遇到了困难&#xff08;疑惑abc错误&#xff09;,可能试了很多次都没有成功。现总结一下这些年来的一些注册流程经验&#xff0c;或许你们也能成功申请到自己的…...

芯知识 | NVH-FLASH语音芯片支持平台做语音—打造音频IC技术革新

随着科技的飞速发展&#xff0c;人们对于电子产品的音频性能要求越来越高。在这种背景下&#xff0c;NVH-FLASH系列语音芯片应运而生&#xff0c;作为音频IC领域的一次重大技术革新&#xff0c;NVH-FLASH系列语音芯片凭借其卓越的性能与灵活的支持平台&#xff0c;正逐步引领着…...

机器学习——解释性AI与可解释性机器学习

解释性AI与可解释性机器学习: 理解机器学习模型背后的逻辑 随着人工智能技术的广泛应用&#xff0c;机器学习模型越来越多地被用于决策过程。然而&#xff0c;这些模型&#xff0c;尤其是深度学习模型&#xff0c;通常被视为“黑箱”&#xff0c;难以理解其背后的决策逻辑。解…...

中国全国省市区县汇总全国省市区json省市区数据2024最新

简介 包含全国省市区县数据,共3465个。 全国总共有23个省、5个自治区、4个直辖市、2个特别行政区。 ——更新于2024年10月16日,从2017年开始,已经更新坚持7年 从刚开始1000个左右的城市json,到现在全国省市区县3465个。 本人感觉应该是目前最完善的~ 每年都在更新中,…...

[Linux#67][IP] 报头详解 | 网络划分 | CIDR无类别 | DHCP动态分配 | NAT转发 | 路由器

目录 一. IP协议头格式 学习任何协议前的两个关键问题 IP 报头与有效载荷分离 分离方法 为什么需要16位总长度 如何交付 二. 网络通信 1.IP地址的划分理念 2. 子网管理 3.网络划分 CIDR&#xff08;无类别域间路由&#xff09; 目的IP & 当前路由器的子网掩码 …...

路由器原理和静态路由配置

一、路由器的工作原理 根据路由表转发数据 接收数据包→查看目的地址→与路由表进行匹配找到转发端口→转发到该端口 二、路由表的形成 它是路由器中维护的路由条目的集合&#xff0c;路由器根据路由表做路径选择&#xff0c;里面记录了网段ip地址和对应下一跳接口的接口号。…...

基于2D工程图几何特征与梯度提升模型的制造成本智能预测

1. 项目概述&#xff1a;从图纸到报价的智能革命在制造业&#xff0c;尤其是像汽车零部件这样的离散制造领域&#xff0c;报价速度直接决定了订单的生死。传统上&#xff0c;拿到一张新的2D工程图&#xff08;DWG格式&#xff09;&#xff0c;成本工程师需要花上几天甚至几周时…...

零基础轻松拿捏!魔珐星云青少年健康运动教学数字人搭建全流程指南

大家好&#xff01;本次给大家分享一款面向青少年体育教育的AI创意实践项目——青少年健康运动教学智能数字交互系统。本项目聚焦青少年体质健康痛点&#xff0c;围绕体育教学智能化升级需求&#xff0c;打造集健康知识教学、运动动作陪练、健康知识考核、运动能力评测于一体的…...

如何快速掌握开源UE资产编辑器:UAssetGUI完整配置与实战指南

如何快速掌握开源UE资产编辑器&#xff1a;UAssetGUI完整配置与实战指南 【免费下载链接】UAssetGUI A tool designed for low-level examination and modification of Unreal Engine game assets by hand. 项目地址: https://gitcode.com/gh_mirrors/ua/UAssetGUI UAss…...

告别鼠标手!5分钟上手开源鼠标连点器MouseClick,轻松实现自动化点击

告别鼠标手&#xff01;5分钟上手开源鼠标连点器MouseClick&#xff0c;轻松实现自动化点击 【免费下载链接】MouseClick &#x1f5b1;️ MouseClick &#x1f5b1;️ 是一款功能强大的鼠标连点器和管理工具&#xff0c;采用 QT Widget 开发 &#xff0c;具备跨平台兼容性 。软…...

智能体所有权与版权:AI Agent Harness Engineering 创造的作品归谁所有?

1. 标题选项 《AI Agent创作版权迷局破解:从Harness工程原理到所有权划分的完整指南》 《智能体作品归谁?AI Agent Harness Engineering场景下的版权规则深度拆解》 《告别权属纠纷:一文搞懂AI Agent生成内容的所有权、版权与收益分配规则》 《Harness工程视角下的AI创作权:…...

半导体元件(二极管/三极管/MOS管/IC)损坏诊断全解

半导体元件&#xff08;二极管、三极管、MOS 管、集成电路&#xff09;是 PCB 的核心功能单元&#xff0c;对过压、过流、ESD、高温极度敏感&#xff0c;损坏后直接导致电路功能失效、短路烧板。很多工程师维修时盲目更换芯片&#xff0c;不仅成本高&#xff0c;还易误判。​一…...

Sangfor文件夹可以删除吗?【图文讲解】深信服文件夹残留清理?如何彻底删除深信服?Sangfor文件夹是什么?

&#xff08;1&#xff09;问题背景打开C盘&#xff0c;突然冒出个Sangfor 文件夹&#xff0c;占用好几个 GB 空间&#xff0c;想删又不敢删&#xff0c;怕删坏系统、断网崩溃&#xff1b;上网一查&#xff0c;说法五花八门&#xff0c;有人说是病毒&#xff0c;有人说是办公软…...

神经网络与深度学习 第3周课程总结

深度学习视觉应用课程总结 一、常用计算机视觉数据集数据集名称发布方/年份规模图像规格类别数主要用途核心特点MNIST美国国家标准与技术研究院60k训练10k测试2828灰度图10类(0-9手写数字)入门级图像分类最经典的手写数字识别基准数据集Fashion-MNISTZalando(2017)60k训练10k测…...

CausalVLR基准测试报告:在IU X-Ray和MIMIC-CXR数据集上的性能分析

CausalVLR基准测试报告&#xff1a;在IU X-Ray和MIMIC-CXR数据集上的性能分析 【免费下载链接】CausalVLR CausalVLR: A Toolbox and Benchmark for Vision-Language Causal Reasoning (多模态因果推理开源框架) 项目地址: https://gitcode.com/gh_mirrors/ca/CausalVLR …...

3步快速上手Whisper-WebUI:轻松实现语音转字幕的完整指南

3步快速上手Whisper-WebUI&#xff1a;轻松实现语音转字幕的完整指南 【免费下载链接】Whisper-WebUI A Web UI for easy subtitle using whisper model. 项目地址: https://gitcode.com/gh_mirrors/wh/Whisper-WebUI 还在为视频制作繁琐的字幕而烦恼吗&#xff1f;Whis…...