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

力扣热题100道-子串篇

字串

560.和为K的子数组

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

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

示例 1:

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

示例 2:

输入:nums = [1,2,3], k = 3
输出:2
/**
思路:采用前缀和+哈希表解决
前缀和求出来后存到哈希表中,每个试着减去k如果有值说明有连续字串和为K
**/
class Solution {
public:int subarraySum(vector<int>& nums, int k) {int n=nums.size();vector<int> f(n);f[0]=nums[0];for(int i=1;i<n;i++){f[i]=f[i-1]+nums[i];}unordered_map<int,int> hash;hash[0]=1;int res=0;for(int i=0;i<n;i++){res+=hash[f[i]-k];hash[f[i]]++;}return res;}
};

239.滑动窗口最大值

给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。

返回 滑动窗口中的最大值

示例 1:

输入:nums = [1,3,-1,-3,5,3,6,7], k = 3
输出:[3,3,5,5,6,7]
解释:
滑动窗口的位置                最大值
---------------               -----
[1  3  -1] -3  5  3  6  7       31 [3  -1  -3] 5  3  6  7       31  3 [-1  -3  5] 3  6  7       51  3  -1 [-3  5  3] 6  7       51  3  -1  -3 [5  3  6] 7       61  3  -1  -3  5 [3  6  7]      7
-1 3 

示例 2:

输入:nums = [1], k = 1
输出:[1]
/**
思路:采用单调队列解决,队头为最大,每轮进行比较 i-k+1判断是否滑出窗口
队尾到队头  从小到大
来个值直接将小于它的全部干掉,塞到队尾
**/
class Solution {
public:vector<int> maxSlidingWindow(vector<int>& nums, int k) {//单调队列解决deque<int> dq;vector<int> res;for(int i=0;i<nums.size();i++){//单调队列//有更大的把小的撵走,更大的下标肯定更优先选择,来小的塞到后面,防止前面大的滑出去了,小的可替if(dq.size()&& i-k+1 > dq.front() ) dq.pop_front();while(dq.size() && nums[i]> nums[dq.back()]) dq.pop_back();dq.push_back(i);if(i-k+1>=0) res.push_back(nums[dq.front()]);}return res;}
};

76.最小覆盖字串

给你一个字符串 s 、一个字符串 t 。返回 s 中涵盖 t 所有字符的最小子串。如果 s 中不存在涵盖 t 所有字符的子串,则返回空字符串 ""

注意:

  • 对于 t 中重复字符,我们寻找的子字符串中该字符数量必须不少于 t 中该字符数量。
  • 如果 s 中存在这样的子串,我们保证它是唯一的答案。

示例 1:

输入:s = "ADOBECODEBANC", t = "ABC"
输出:"BANC"
解释:最小覆盖子串 "BANC" 包含来自字符串 t 的 'A'、'B' 和 'C'。

示例 2:

输入:s = "a", t = "a"
输出:"a"
解释:整个字符串 s 是最小覆盖子串。

示例 3:

输入: s = "a", t = "aa"
输出: ""
解释: t 中两个字符 'a' 均应包含在 s 的子串中,
因此没有符合条件的子字符串,返回空字符串
/*
思路:采用哈希表法,用两个哈希表 进行比较
如果遍历的串里存在t的值就让count++,然后进行窗口滑动即可
*/
class Solution {
public:string minWindow(string s, string t) {unordered_map<int,int> hs;unordered_map<int,int> ht;for(auto c:t) ht[c]++;int count = 0;string res;for(int i=0,j=0;i<s.size();i++){hs[s[i]]++;//只算到第一个找到的位置即可,后面不会再更新了if(hs[s[i]]<=ht[s[i]]) count++;while(hs[s[j]] > ht[s[j]]) hs[s[j++]]--;if(count == t.size() && (res.empty() || i-j+1<res.size()) ){res = s.substr(j,i-j+1);}            }return res;}
};

相关文章:

力扣热题100道-子串篇

字串 560.和为K的子数组 给你一个整数数组 nums 和一个整数 k &#xff0c;请你统计并返回 该数组中和为 k 的子数组的个数 。 子数组是数组中元素的连续非空序列。 示例 1&#xff1a; 输入&#xff1a;nums [1,1,1], k 2 输出&#xff1a;2示例 2&#xff1a; 输入&a…...

day3--Shell

1.shell语法 概论 概论 shell是我们通过命令行与操作系统沟通的语言。shell脚本可以直接在命令行中执行&#xff0c;也可以将一套逻辑组织成一个文件&#xff0c;方便复用。 AC Terminal中的命令行可以看成是一个“shell脚本在逐行执行”。Linux中常见的shell脚本有很多种&…...

【数据结构】插入排序、选择排序、冒泡排序、希尔排序、堆排序

前言&#xff1a;生活中我们总是会碰到各种各样的排序&#xff0c;今天我们就对部分常用的排序进行总结和学习&#xff0c;今天的内容还是相对比较简单的一部分&#xff0c;各位一起加油哦&#xff01; &#x1f496; 博主CSDN主页:卫卫卫的个人主页 &#x1f49e; &#x1f44…...

TiDB 7.5 LTS 发版丨提升规模化场景下关键应用的稳定性和成本的灵活性

互联网时代&#xff0c;数据的迅猛增长给数据库带来了可扩展性的挑战&#xff0c;Gen AI 带来的数据暴增更加剧了这种挑战。传统的数据分片已经不能承载新时代数据暴增的需求&#xff0c;更简单且具有前瞻性的方法则是采用原生分布式数据库来解决扩展性问题。在这种规模化场景的…...

服务器数据恢复-误操作导致xfs分区数据丢失的数据恢复案例

服务器数据恢复环境&#xff1a; 某品牌OceanStorT系列某型号存储MD1200磁盘柜&#xff0c;组建的raid5磁盘阵列。上层分配了1个lun&#xff0c;安装的linux操作系统&#xff0c;划分两个分区&#xff0c;分区一通过lvm进行扩容&#xff0c;分区二格式化为xfs文件系统。 服务器…...

安装Kubernetes1.23、kubesphere3.4、若依项目自动打包部署到K8S记录

1.安装kubernetes1.23详细教程 kubernetes(k8s)集群超级详细超全安装部署手册 - 知乎 2.安装rancher动态存储 kubectl apply -f https://raw.githubusercontent.com/rancher/local-path-provisioner/master/deploy/local-path-storage.yaml3.安装kubesphere3.4 准备工作 您…...

(三) `MaterializedMySQL`同步机制解读

当使用 ClickHouse 的 MaterializedMySQL 引擎进行全量同步时&#xff0c;它主要依赖于两个关键机制&#xff1a;初始全量数据导入和随后的增量更新。以下是这些机制的详细解释&#xff1a; 初始全量数据导入 读取现有数据: 当您在 ClickHouse 中创建一个 MaterializedMySQL 类…...

使用 stream 流构建树(不使用递归)

你知道的越多&#xff0c;你不知道的越多 点赞再看&#xff0c;养成习惯 如果您有疑问或者见解&#xff0c;欢迎指教&#xff1a; 企鹅&#xff1a;869192208 文章目录 前言代码实现定义测试实体类实现方法 前言 最近遇到一个地区数据需要转换成树的需求&#xff0c;研究了一种…...

docker 部署 个人网页版 wps office

先声明一下&#xff0c;这个是用的linux桌面&#xff0c;然后安装了一个wps软件 安装好之后&#xff0c;通过我们自己的浏览器进行操作。。。。。 我只是试了一下&#xff0c;目前发现只能一个人用&#xff0c;里面还有谷歌浏览器&#xff0c;就是一个远程linux桌面 docker …...

windows进行udp端口转发,解决项目中服务器收不到组播数据的问题

说明 windows7的netsh interface portproxy命令只支持tcp端口转发 如果要进行udp端口转发可以使用sokit 运行sokit 端口转发&#xff08;以为tcp作为讲解&#xff0c;udp类似&#xff09; 选择转发器 输入监听地址&#xff08;SRC地址&#xff09;和端口 输入转发地址&am…...

抖音、小红书、视频号是如何判定是否限流的?

在这个新媒体营销的时代&#xff0c;抖音、小红书和视频号作为中国最受欢迎的社交媒体平台&#xff0c;为品牌和内容创作者提供了极具潜力的展示空间。然而&#xff0c;无论在哪个平台&#xff0c;限流成为很多人的苦恼。 抖音的推荐算法基于人群画像和初始流量池&#xff0c;同…...

frida native hook 技术( frida hook so层函数)

什么是hook&#xff1a; hook&#xff0c;中文译作”钩子“&#xff0c;”挂钩“&#xff0c;看起来好像和钓鱼有点关系&#xff0c;其实它更像一张网。想象这样一个场景&#xff1a;我们在河流上筑坝&#xff0c;只留一个狭窄的通道让水流通过&#xff0c;在这个通道上设一张网…...

SpringBoot运维(三)-- 多环境开发(yml多文件版)

目录 引言: 1. 多环境开发的配置 2. 多环境开发--根据功能拆分配置文件 引言: 多环境? 其实就是说你的电脑上写的程序最终要放到别人的服务器上去运行。每个计算机环境不一样࿰...

Vue 修饰符有哪些

事件修饰符 .stop 阻止事件继续传播.prevent 阻止标签默认行为.capture 使用事件捕获模式, 即元素自身触发的事件先在此处处理&#xff0c;然后才交由内部元素进行处理.self 只当在 event.target 是当前元素自身时触发处理函数.once 事件将只会触发一次.passive 告诉浏览器你不…...

哈希桶的模拟实现【C++】

文章目录 哈希冲突解决闭散列 &#xff08;开放定址法&#xff09;开散列 &#xff08;链地址法、哈希桶&#xff09;开散列实现&#xff08;哈希桶&#xff09;哈希表的结构InsertFindErase 哈希冲突解决 闭散列 &#xff08;开放定址法&#xff09; 发生哈希冲突时&#xf…...

磁盘相关知识

一、硬盘数据结构 1.扇区&#xff1a; 盘片被分为多个扇形区域&#xff0c;每个扇区存放512字节的数据&#xff08;扇区越多容量越大&#xff09; 存放数据的最小单位 512字节 &#xff08;硬盘最小的存储单位是扇区&#xff0c;512 个字节&#xff0c;八个扇区组成一块&…...

FTP原理与配置

FTP是用来传送文件的协议。使用FTP实现远程文件传输的同时&#xff0c;还可以保证数据传输的可靠性和高效性。 FTP的应用 FTP 提供了一种在服务器和客户机之间上传和下载文件的有效方式。在企业网络中部署一台FTP服务器&#xff0c;将网络设备配置为FTP客户端&#xff0c;则可…...

ios环境搭建_xcode安装及运行源码

目录 1 xcode 介绍 2 xcode 下载 3 xocde 运行ios源码 1 xcode 介绍 Xcode 是运行在操作系统Mac OS X上的集成开发工具&#xff08;IDE&#xff09;&#xff0c;由Apple Inc开发。Xcode是开发 macOS 和 iOS 应用程序的最快捷的方式。Xcode 具有统一的用户界面设计&#xff0…...

C++ 151. 反转字符串中的单词

给你一个字符串 s &#xff0c;请你反转字符串中 单词 的顺序。 单词 是由非空格字符组成的字符串。s 中使用至少一个空格将字符串中的 单词 分隔开。 返回 单词 顺序颠倒且 单词 之间用单个空格连接的结果字符串。 注意&#xff1a;输入字符串 s中可能会存在前导空格、尾随…...

腾讯云服务器如何买(购买腾讯云服务器的详细步骤)

腾讯云服务器购买流程直接在官方秒杀活动上购买比较划算&#xff0c;在云服务器CVM或轻量应用服务器页面自定义购买价格比较贵&#xff0c;但是自定义购买云服务器CPU内存带宽配置选择范围广&#xff0c;活动上购买只能选择固定的活动机&#xff0c;选择范围窄&#xff0c;但是…...

面试官最爱阴人的滑动窗口题,为啥你总是写崩?

面试官最爱阴人的滑动窗口题,为啥你总是写崩? 很多人刷算法的时候,都有一种错觉: 动态规划最难。 图论最恶心。 回溯最容易超时。 结果真正到了大厂面试现场。 面试官笑眯眯来一句: 给你一个字符串,求: 至多包含 K 个不同字符的最长子串然后。 一堆人开始原地去世…...

JetBrains IDE试用期重置终极指南:如何免费延长30天评估期

JetBrains IDE试用期重置终极指南&#xff1a;如何免费延长30天评估期 【免费下载链接】ide-eval-resetter 项目地址: https://gitcode.com/gh_mirrors/id/ide-eval-resetter JetBrains IDE试用期重置工具&#xff08;ide-eval-resetter&#xff09;是一款专业的开源解…...

探索商业成功的奥秘:BABOK Guide v3深度解析

探索商业成功的奥秘&#xff1a;BABOK Guide v3深度解析 【下载地址】商业分析知识体系指南BABOKGuidev3 《商业分析知识体系指南&#xff08;BABOK Guide v3&#xff09;》是业界权威的商业分析专业标准&#xff0c;深受全球专业人士的认可与信赖。本指南经过严密的共识驱动开…...

基于Circuit Playground Express与NeoPixel的智能光控花环制作全攻略

1. 项目概述&#xff1a;打造一个会“呼吸”的智能光之花环你是否想过&#xff0c;让一串普通的装饰灯带拥有感知环境、自动调节的“生命”&#xff1f;这听起来像是科幻电影里的场景&#xff0c;但实际上&#xff0c;利用今天唾手可得的开源硬件和图形化编程工具&#xff0c;任…...

【自用】Kicad 导入嘉立创元器件封装(NLBN插件)

总览 1.安装插件 2.下载元件封装 3.配置 Kicad 4.效果演示 零、特别鸣谢 感谢插件提供者&#xff1a;linkyourbin UP主教学视频&#xff1a;https://www.bilibili.com/video/BV1W6AXz2EfR/?spm_id_from333.337.search-card.all.click&vd_source38d6ea3466db371e6c07c24…...

NotebookLM提示工程在能源政策分析中的致命误区(附12个经NREL验证的Prompt模板)

更多请点击&#xff1a; https://codechina.net 第一章&#xff1a;NotebookLM能源技术研究 NotebookLM 是 Google 推出的基于 AI 的研究协作者工具&#xff0c;其核心能力在于对用户上传的私有文档进行语义理解与上下文关联。在能源技术领域&#xff0c;研究人员可借助 Noteb…...

FreeRTOS互斥信号量实战:用STM32CubeIDE解决多任务访问共享串口的优先级翻转问题

FreeRTOS互斥信号量实战&#xff1a;用STM32CubeIDE解决多任务访问共享串口的优先级翻转问题 在嵌入式系统开发中&#xff0c;多任务并发访问共享资源是一个常见且棘手的问题。想象一下这样的场景&#xff1a;你的STM32设备上有两个任务需要向同一个串口发送数据——一个高优先…...

单传感器肌电假肢:DTW算法实现92%识别准确率

1. 项目概述肌电假肢技术在过去几十年里取得了显著进展&#xff0c;但传统多传感器系统的高成本和复杂性仍然是阻碍其普及的主要障碍。作为一名从事生物医学工程研究多年的从业者&#xff0c;我一直在寻找更经济高效的解决方案。这项研究提出了一种创新方法&#xff1a;仅使用单…...

5 分钟快速上手 hoist-non-react-statics:提升组件静态属性的完整教程

5 分钟快速上手 hoist-non-react-statics&#xff1a;提升组件静态属性的完整教程 【免费下载链接】hoist-non-react-statics Copies non-react specific statics from a child component to a parent component 项目地址: https://gitcode.com/gh_mirrors/ho/hoist-non-reac…...

ghw高级功能:系统信息、基板、BIOS和产品信息的完整教程

ghw高级功能&#xff1a;系统信息、基板、BIOS和产品信息的完整教程 【免费下载链接】ghw Go HardWare discovery/inspection library 项目地址: https://gitcode.com/gh_mirrors/gh/ghw ghw是一个功能强大的Go硬件发现/检查库&#xff0c;能够帮助开发者轻松获取系统硬…...