力扣热题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;}
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/589702.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

前端算法之滑动窗口

滑动窗口 滑动窗口思路&#xff1a;举例: 在一个数组中查找连续子数组的最大值之和。举例: 无重复字符的最长子串 滑动窗口 滑动窗口&#xff08;Sliding Window&#xff09;是一种常用的算法技巧&#xff0c;用于处理数组或字符串相关的问题。 它通过维护一个固定大小的窗口…

亿级流量场景下如何优化混合回收

大白话&#xff1a; 我们完全可以通过最大停顿时间的调整&#xff0c;来控制每次垃圾回收的region数量以及回收垃圾大小。 大白话&#xff1a; 1.是已分配内存占总内存的超过45%阈值&#xff1b; 2.优化G1垃圾回收关键的一点&#xff0c;设置合理的最大停顿时间。 大白话&#…

打破数据孤岛:ChatGPT如何打通金融大数据的任督二脉?

文章目录 一、引言二、ChatGPT与金融大数据分析的融合三、实践应用&#xff1a;ChatGPT在金融大数据分析中的优势与挑战四、案例分析&#xff1a;ChatGPT在金融大数据分析中的应用案例五、前景展望&#xff1a;ChatGPT在金融大数据分析领域的未来发展《AI时代Python金融大数据分…

数据仓库-数仓优化小厂实践

一、背景 由于公司规模较小&#xff0c;大数据相关没有实现平台化&#xff0c;相关的架构都是原生的Apache组件&#xff0c;所以集群的维护和优化都需要人工的参与。根据自己的实践整理一些数仓相关的优化。 二、优化 1、简易架构图 2、ODS层优化 2.1 分段式解析 随着业务增长…

美团面试:索引的设计规范,你知道哪些?

美团面试&#xff1a;索引的设计规范&#xff0c;你知道哪些&#xff1f; 尼恩说在前面 在40岁老架构师 尼恩的读者交流群(50)中&#xff0c;尼恩一直在指导大家改造简历、指导面试。指导很多小伙伴拿到了一线互联网企业网易、美团、字节、如阿里、滴滴、极兔、有赞、希音、百…

智慧园区物联综合管理平台之系统集成功能及接口需求

南向接口 高端制造园区联网平台南向主要面对各园区各项公共物联设施接入。 南向所接入的接口类型、 数据协议等也种类繁多, 平台根据实际调研情况及未来发展趋势, 梳理了十几种设备以及协议接入的情况, 依据此情况, 园区物联管理平台设计了标准的、 统一的南向的标准SDK调…

2023年12月31日_解读openai的新对齐论文

如果人类无法监督超级人工智能 那么人工智能可以么&#xff1f; 过去一年 以预测下一个Token为本质的大模型 已经横扫了人类世界的多项任务 展现了人工智能的巨大潜力 Ilya Sutskever也大胆预言 如果模型能够很好地预测下一个token 那么意味着它能够理解导致这个token产生的深刻…

多边形的填充算法的分析

多边形的填充 分析 思路一 我们之前已经实现了对直线的扫描转换&#xff0c;但是现在我们遇到了新的问题那就是如何对多边形进行填充&#xff0c;如图所示&#xff0c;如何对图示的多边形进行填充呢&#xff1f; 我所想到的第一个办法是这样的&#xff0c;那就是假设上顶点…

webRTC实时通信demo

参考文档&#xff1a; https://www.jianshu.com/p/f439ce5cc0be https://www.w3cschool.cn/socket demo流程示意图&#xff08;用户A向用户B推送视频&#xff09;&#xff1a; #mermaid-svg-0KZaDQ5DBl28zjmZ {font-family:"trebuchet ms",verdana,arial,sans-seri…

总结—elasticsearch启动失败的几种情况及解决

转载说明&#xff1a;如果您喜欢这篇文章并打算转载它&#xff0c;请私信作者取得授权。感谢您喜爱本文&#xff0c;请文明转载&#xff0c;谢谢。 摘要 本文主要梳理从ES初学以来所遇到的启动失败的几种情况。 1、使用root用户启动失败 在有一次搭建elasticsearch的时候&am…

除了国家自然科学基金,还有以下科研基金

除了国家自然科学基金&#xff0c;还有以下科研基金&#xff1a; 国家社科基金&#xff1a;这是国家社会科学基金的简称&#xff0c;主要支持国内的社会科学研究项目。国家重点实验室和国家工程&#xff08;技术&#xff09;研究中心开放基金&#xff1a;这些基金主要支持在国…

【Linux】—— 匿名管道

前言&#xff1a; 接下来我将带大家探索 进程间通信 的方式。本期&#xff0c;要讲的就是管道其中之一“匿名管道”&#xff01;&#xff01; 目录 &#xff08;一&#xff09;进程间通信介绍 1、进程间通信目的 2、进程间通信发展 3、进程间通信分类 &#xff08;二&…

(JAVA)-(网络编程)-UDP协议

在上上文章中我们简单了解了UDP通信协议和TCP协议。这篇文章 来讲解java中如何使用UDP协议发送数据。 UDP通信协议发送数据&#xff1a; 而使用UDP通信协议发送数据也可以看成是寄快递的过程。 在寄快递的过程中&#xff0c;我们首先得找快递公司&#xff0c;接着得打包好礼物…

文件分片上传(模拟网盘效果)

文件分片上传&#xff08;模拟网盘效果&#xff09; 文章说明简单模拟拖拽文件夹和选择文件的进度条效果效果展示结合后端实现文件上传效果展示加上分片的效果效果展示加上MD5的校验&#xff0c;实现秒传和分片的效果后续开发说明源码下载 文章说明 文章主要为了学习文件上传&a…

2024年【黑龙江省安全员C证】考试及黑龙江省安全员C证找解析

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2024年黑龙江省安全员C证考试为正在备考黑龙江省安全员C证操作证的学员准备的理论考试专题&#xff0c;每个月更新的黑龙江省安全员C证找解析祝您顺利通过黑龙江省安全员C证考试。 1、【多选题】下列属于编制安全检查…

浅聊配置化-要不要实现动态表单

1、配置化的原则 配置化是一种抽象&#xff0c;把事物分成2类&#xff1a;不变的&#xff0c;可变的。 如果事物都是可变的&#xff0c;是无法实现配置化的。 配置化的根本在于找到不变的事物&#xff0c;基于不变的事物进行可变事物的配置。 所以&#xff0c;认为一切皆可…

[LLM]大模型训练(二)--DeepSpeed使用

安装DeepSpeed与集成 DeepSpeed可以通过pip安装&#xff0c;无需指定PyTorch和CUDA的版本。DeepSpeed内包含需要自定义的CUDA算子&#xff0c;将通过即时编译的方式在运行时构建。 pip install deepspeed DeepSpeed与HuggingFace Transformers直接集成。使用者可以通过在模型…

从入门到精通,30天带你学会C++【第十一天:二分查找】

目录 Everyday English 前言 二分查找 例题 50分做法 分析利弊 示例代码 示例截图 100分做法 二分查找是什么&#xff1f; 这题该怎么用二分查找&#xff1f; 示例代码 示例截图 结尾 Everyday English Look before you leap. 三思而后行 前言 今天是2024年的…

高创驱动器设置备忘

1&#xff1a;高创驱动器连接软件SVRstudio 有一代和二代&#xff0c;这里为了简述方便称SV1,SV2版本&#xff0c;它们都可以连接驱动器&#xff0c;只是使用界面上有些差异而已&#xff0c;为了设置方便的需要&#xff0c;建议同时安装两个版本&#xff1b; 2&#xff1a;通常…

爬取糖豆视频

爬虫案例积累&#xff0c;以爬取糖豆视频为例&#xff1a; 爬取视频类型的数据一般步骤&#xff1a; 1.点击media,刷新&#xff0c;播放一个视频&#xff0c;会刷新一个包&#xff0c;点击发现是播放视频的包&#xff0c; 2.复制这个包url中的关键字&#xff0c;在搜索框中进…