每日两题 / 76. 最小覆盖子串 239. 滑动窗口最大值(LeetCode热题100)

76. 最小覆盖子串 - 力扣(LeetCode)
image.png

类似双指针(滑动窗口),一开始l和r指向0下标,当区间[l, r)之间的字符串无法覆盖t串时,r++。直到区间覆盖了t串
接着移动l指针,假设当前区间为[l + 1, r),如果该区间能覆盖t串,那么l++。直到[l + 1, r)无法覆盖t串
此时区间[l, r)就是一个满足题意的区间,根据该区间大小维护答案即可

class Solution {
public:string minWindow(string s, string t) {unordered_map<char, int> cur, mp;for (auto c : t)mp[c] ++ ;int l = 0, r = 0;string ans;auto check = [&](){for (auto tt : mp){if (cur[tt.first] < tt.second)return false;}return true;};while (r < s.size()){while (r < s.size() && !check()){cur[s[r]] ++ ;r ++ ;}while (true){if ((-- cur[s[l]], 1) && check()) l ++ ;else {cur[s[l]] ++ ;break;}}if (check() && (ans.size() == 0 || r - l < ans.size())) ans = s.substr(l, r - l);cur[s[l]] -- ;l ++ ;}return ans;}
};

239. 滑动窗口最大值 - 力扣(LeetCode)
image.png

用大堆维护窗口中的k个数,同时维护这些数在数组中的下标
当堆顶元素的下标小于窗口的左边界时,删除堆顶元素

或者使用单调队列,每次移动后,取队头元素即可

class Solution {
public:vector<int> maxSlidingWindow(vector<int>& nums, int k) {vector<int> ans;priority_queue<pair<int, int>> q;for (int i = 0; i < k; ++ i)q.emplace(nums[i], i);ans.push_back(q.top().first);for (int i = k; i < nums.size(); ++ i){while (q.size() && q.top().second <= (i - k))  q.pop();q.emplace(nums[i], i);ans.push_back(q.top().first);}return ans;}
};
class Solution {
public:int q[100010];int hh = 0, tt = -1;vector<int> maxSlidingWindow(vector<int>& nums, int k) {vector<int> ans;for (int i = 0; i < nums.size(); ++ i){if (tt >= hh && q[hh] < i - k + 1) ++ hh;while (tt >= hh && nums[q[tt]] <= nums[i]) -- tt;q[++ tt] = i;if (i >= k - 1) ans.push_back(nums[q[hh]]);}return ans;}
};

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

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

相关文章

毕设学习:联邦学习梯度聚合加密算法

原本的加密算法大致思路&#xff1a;各个客户端上传梯度时进行加密&#xff0c;服务端直接用有扰乱的梯度当成真梯度来计算&#xff0c;这样一来谁也不知道谁是真梯度 为了避免原本的算法的一些问题&#xff0c;本文提出了加密-解密结构&#xff0c;并证明了这种结构带来的误差…

光伏电站智能勘探:无人机优势及流程详解

随着科技和互联网技术的不断发展&#xff0c;无人机在各个领域的应用越来越广泛&#xff0c;其中之一就是光伏电站智能勘探。利用无人机高清摄像头和传感器等设备&#xff0c;可以对光伏电站周边环境、日照情况、房屋状态进行全方面的勘探和记录&#xff0c;搭配卫星勘探、实地…

掌上医院预约挂号系统源码,开发技术:C#+uni-app+.net+SqlServer

医院微信预约挂号系统是一种基于微信平台的医疗服务系统&#xff0c;它利用微信的广泛覆盖和便捷性&#xff0c;为患者提供线上预约挂号的服务。通过该系统&#xff0c;患者可以使用自己的微信账号登录&#xff0c;浏览医院的医生排班信息&#xff0c;选择合适的医生和就诊时间…

【Python】异常处理结构

文章目录 1.python异常2.try_except异常处理结构3.try... 多个except异常处理4.try_except_else异常处理结构5.try_except_finally异常处理结构6.常见报错类型 在运行代码时&#xff0c;总是遇到各种异常&#xff0c;且出现异常时&#xff0c;脚本就会自动的的停止运行&#xf…

野生动物保护视频AI智能监管方案,撑起智能保护伞,守护野生动物

一、背景 在当今世界&#xff0c;野生动物保护已经成为全球性的重要议题。然而&#xff0c;由于野生动物生存环境的不断恶化以及非法狩猎等活动的盛行&#xff0c;保护野生动物变得尤为迫切。为了更有效地保护野生动物&#xff0c;利用视频智能监管技术成为一种可行的方案。 …

2024年在Vim中开发vue2+java

neovim 0.5刚出来的时代&#xff0c;那时刚有lua插件我很狂热。每天沉迷于打造自己的IDE之中。写过一堆相关的博客&#xff0c;也录过一些视频教程。后来发现neovim的接口和插件更新的很快&#xff0c;导致配置文件要不定期的修改&#xff0c;才能保证新版本的插件的适配。我也…

案例实践 | InterMat:基于长安链的材料数据发现与共享系统

案例名称&#xff1a;InterMat-基于区块链的材料数据发现与共享系统 ■ 建设单位 北京钢研新材科技有限公司 ■ 用户群体 材料数据上下游单位 ■ 应用成效 已建设10共识节点、50轻节点&#xff0c;1万注册用户 案例背景 材料是构成各种装备和工程的物质载体&#xff0c…

bootstrap-select 搜索过滤输入中文问题,前2个字母输入转成空格

bootstrap是v3.3.7的 v1.6.3版本的bootstrap-select,注释以下2行 //that.$menu.find(li).filter(:visible:not(.divider)).eq(0).addClass(active).find(a).focus(); // $(this).focus();

友思特应用 | 红外视角的延伸:短波红外相机的机器视觉应用

导读 短波红外SWIR在不同波段针对不同材料的独特成像特征为各领域检测应用的拓宽提供了基础。本文将展现短波红外成像技术在水分检测、塑料检测、太阳能电池板检查和矿场开采等领域的丰富应用案例&#xff0c;讨论短波红外相机在未来的发展方向。 SWIR 背景简介 短波红外 &am…

使用 wireshark 抓包,在 postman 中模拟请求给小朋友投票

突然某天在微信群里收到了朋友的投票请求&#xff0c;点进去发现不需要授权&#xff0c;我就喜欢这样不需要登录的投票网站 在电脑端微信打开后&#xff0c;微信浏览器右上角可以复制链接 于是&#xff0c;我拿到了这个地址&#xff1a;http://hjkki.cvnxoz.cn/app/YYkEgSzlr…

中科亿海微-CL1656功能验证开发板

I. 引言 A. 研究背景与意义 CL1656是一款精度高、功耗低、成本低的5V单片低功耗运放&#xff0c;由核心互联公司研发制造&#xff0c;CL1656 是一个 16-bit、快速、低功耗逐次逼近型 ADC&#xff0c;吞吐速率高达 250 kSPS&#xff0c;并且内置低噪声、宽 带宽采样保持放大器。…

【Java EE】Spring核心思想(一)——IOC

文章目录 &#x1f38d;Spring 是什么&#xff1f;&#x1f384;什么是IoC呢&#xff1f;&#x1f338;传统程序开发&#x1f338;传统程序开发的缺陷&#x1f338;如何解决传统程序的缺陷&#xff1f;&#x1f338;控制反转式程序开发&#x1f338;对比总结 &#x1f332;理解…