LeetCode热题100刷题4:76. 最小覆盖子串、239. 滑动窗口最大值、53. 最大子数组和、56. 合并区间

76. 最小覆盖子串

滑动窗口解决字串问题。

labuladong的算法小抄中关于滑动窗口的算法总结:

class Solution {
public:string minWindow(string s, string t) {unordered_map<char,int> need,window;for(char c : t) {need[c]++;}int left = 0, right = 0;int start = 0, len = INT_MAX;int valid=0;while(right < s.size()) {char c = s[right];right++;if(need.count(c)) {window[c]++;if(window[c] == need[c])valid++;}while(valid==need.size()) {if(right-left < len) {start = left;len = right-left;}char d = s[left];left++;if(need.count(d)) {if(window[d]==need[d])valid--;window[d]--;}}}return len==INT_MAX ? "" : s.substr(start,len);}
};

在这里插入图片描述

239. 滑动窗口最大值

加粗样式

class Solution {
public:class MyQueue{public:deque<int> que;void pop(int value) {if(!que.empty() && value==que.front()) {que.pop_front();}}void push(int value) {while(!que.empty() && value > que.back()) {que.pop_back();}que.push_back(value);}int front(){return que.front();}};vector<int> maxSlidingWindow(vector<int>& nums, int k) {MyQueue que;vector<int> result;for(int i=0;i<k;i++) {que.push(nums[i]);}result.push_back(que.front());for(int i=k;i<nums.size();i++) {que.pop(nums[i-k]);que.push(nums[i]);result.push_back(que.front());}return result;}
};

53. 最大子数组和

贪心做法:寻找局部最优的逻辑

class Solution {
public:int maxSubArray(vector<int>& nums) {if(nums.size()<=1)return nums[0];int sum = nums[0];int res = sum;for(int i=1;i<nums.size();i++) {sum = max(nums[i]+sum , nums[i]);if(sum > res)res = sum;}return res;}
};

56. 合并区间

按代码随想录来说的话,划分为贪心算法找局部最优的一类问题
今天刚复习了STL的vector底层原理,这个back()是已经实现好的函数,能够获取得数组未元素(的引用)

class Solution {
public:static bool cmp(vector<int>& a, vector<int>& b) {if(a[0]==b[0])return a[1]<b[1];elsereturn a[0] < b[0];}vector<vector<int>> merge(vector<vector<int>>& intervals) {if(intervals.size() <=1)return intervals;sort(intervals.begin(),intervals.end(),cmp);vector<vector<int>> res;res.push_back(intervals[0]);for(int i=0;i<intervals.size();i++) {if(intervals[i][0] <= res.back()[1]) {res.back()[1] = max(intervals[i][1], res.back()[1]);}else {res.push_back(intervals[i]);}}return res;}
};

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

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

相关文章

2.8亿东亚五国建筑数据分享

数据是GIS的血液&#xff01; 我们现在为你分享东亚5国的2.8亿条建筑轮廓数据&#xff0c;该数据包括中国、日本、朝鲜、韩国和蒙古5个东亚国家完整、高质量的建筑物轮廓数据&#xff0c;你可以在文末查看领取方法。 数据介绍 虽然开源的全球的建筑数据已经有微软的建筑数据…

elementUI中table组件固定列时会渲染两次模板内容问题

今天在使用elementUI的table组件时&#xff0c;由于业务需要固定表格的前几项列&#xff0c;然后获取表格对象时发现竟然有两个对象。 查阅资料发现&#xff0c;elementUI的固定列的实现原理是将两个表格拼装而成&#xff0c;因此获取的对象也是两个。对于需要使用对象的方法的…

vxe-table的序号一样

使用vxe-table的时候&#xff0c;有的时候会出现序号相同的现象&#xff0c;这种现象一般出现在我们后面自己添加的行中&#xff0c;就像这种 此时的这三个序号是相同的&#xff0c;我来说一下原因&#xff0c;这是在添加新的一行的时候&#xff0c;有的时候数据很多&#xff0…

Mac 运行 Windows 软件,Parallels Desktop 19和 CrossOver 24全面对比

Parallels Desktop 和 CrossOver 都是能满足你「在 Mac 上运行 Windows 软件」需求的工具。可能很多人都已经知道 Parallels Desktop 是「虚拟机」&#xff0c;但 CrossOver 其实并不是「虚拟机」。这两款软件有相同的作用&#xff0c;但由于实现原理的不同&#xff0c;两者也有…

系统提示我未定义与 ‘double‘ 类型的输入参数相对应的函数 ‘finverse‘,如何解决?

&#x1f3c6;本文收录于「Bug调优」专栏&#xff0c;主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案&#xff0c;希望能够助你一臂之力&#xff0c;帮你早日登顶实现财富自由&#x1f680;&#xff1b;同时&#xff0c;欢迎大家关注&&收藏&&…

Kubernetes 部署简单的应用

Kubernetes 部署简单的应用 Kubernetes 是一个强大的容器编排平台&#xff0c;它可以帮助我们自动化应用程序的部署、扩展和管理。在本期文章中&#xff0c;我们将学习如何使用 Kubernetes 部署一个简单的应用程序。 1. 环境准备 确保你已经安装了 Kubernetes 集群&#xff…

【python模块】argparse

文章目录 argparse模块介绍基本用法add_argument() argparse模块介绍 argparse 模块是 Python 标准库中的一个用于编写用户友好的命令行接口&#xff08;CLI&#xff09;的模块。它允许程序定义它所需要的命令行参数&#xff0c;然后 argparse 会自动从 sys.argv 解析出那些参…

TCP粘包解决方法

一. 产生原因及解决方法 产生原因&#xff1a;TCP是面向连接、基于字节流的协议&#xff0c;其无边界标记。当服务端处理速度比不其接收速度时&#xff0c;就很容易产生粘包现象。 解决方法&#xff1a;目前主要有两种解决方法&#xff0c;一个是在内容中添加分割标识&#xf…

人脸识别考勤系统

人脸识别考勤系统是一种利用生物识别技术进行自动身份验证的现代解决方案&#xff0c;它通过分析和比对人脸特征来进行员工的出勤记录。这种系统不仅提升了工作效率&#xff0c;还大大减少了人为错误和欺诈行为的可能性。 一、工作原理 人脸识别考勤系统的核心在于其生物识别…

深入剖析Python中的Pandas库:通过实战案例全方位解读数据清洗与预处理艺术

引言 随着大数据时代的到来&#xff0c;数据的质量直接影响到最终分析结果的可靠性和有效性。在这个背景下&#xff0c;Python凭借其灵活强大且易于上手的特点&#xff0c;在全球范围内被广泛应用于数据科学领域。而在Python的数据处理生态中&#xff0c;Pandas库无疑是最耀眼…

高级策略:解读 SQL 中的复杂连接

了解基本连接 在深入研究复杂连接之前&#xff0c;让我们先回顾一下基本连接的基础知识。 INNER JOIN&#xff1a;根据指定的连接条件检索两个表中具有匹配值的记录。LEFT JOIN&#xff1a;从左表检索所有记录&#xff0c;并从右表中检索匹配的记录&#xff08;如果有&#x…

管道支架安装

工程结构施工完毕后&#xff0c;系统管道安装完毕后的第一步任务就是管道支架的制作安装&#xff0c;作为对管道固定和承重作用至关重要的支、托、吊架&#xff0c;有些项目部在施工中却往往因为对它们的重要性认识不足&#xff0c;因存在侥幸心里或经验主义&#xff0c;导致支…

NIO为什么会导致CPU100%?

1. Java IO 类型概览 BIO&#xff1a;阻塞I/O&#xff0c;每个连接一个线程&#xff0c;简单但遇到高并发时性能瓶颈明显。NIO&#xff1a;非阻塞I/O&#xff0c;JDK 1.4引入&#xff0c;一个线程处理多个IO操作&#xff0c;提高资源利用率和系统吞吐量。AIO&#xff1a;异步I…

技术探索:利用Python库wxauto实现Windows微信客户端的全面自动化管理

项目地址&#xff1a;github-wxauto 点击即可访问 项目官网&#xff1a;wxauto 点击即可访问 &#x1f602;什么是wxauto? wxauto 是作者在2020年开发的一个基于 UIAutomation 的开源 Python 微信自动化库&#xff0c;最初只是一个简单的脚本&#xff0c;只能获取消息和发送…

kpatch Patch Author Guide

kpatch Patch Author Guide Because kpatch-build is relatively easy to use, it can be easy to assume that a successful patch module build means that the patch is safe to apply. But in fact that’s a very dangerous assumption. 由于 kpatch-build 比较容易使用…

精通Spring Cloud: Spring Cloud Config面试题详解及参考答案(3万字长文)

解释Spring Cloud Config的基本功能和它在微服务架构中的作用 Spring Cloud Config是一个用于集中管理和外部化配置的工具。其核心功能在于允许开发者将配置从代码中分离出来,放置于一个中央存储库中,从而简化了配置管理,提高了应用程序的可维护性和灵活性。在微服务架构中…

论文的3个创新点方向

1、数据分析创新 通过对现有数据的分析&#xff0c;发现新的模式或趋势&#xff0c;提出新的假设或理论的方法。随着大数据和人工智能技术的发展&#xff0c;数据分析在科学研究中也有很多的创新。 可以通过实验、调查、模拟、现场等方式收集相关数据。数据的质量和数量是数据…

掌握MySQL基础命令:数据更新操作详细操作(数据的增删改)

MySQL数据修改是指使用SQL语句&#xff08;如UPDATE、INSERT、DELETE&#xff09;对数据库表中的数据进行更改、添加或删除的操作&#xff0c;常见的操作包括更新表中的记录、插入新记录以及删除现有记录 。 一、数据插入 1插入完整的数据记录 2插入非完整的数据记录 3插入多…

探讨SpringMVC的工作原理

SpringMVC是Spring框架的一部分&#xff0c;是用于构建Web应用程序的一个模块。SpringMVC遵循Model-View-Controller&#xff08;MVC&#xff09;设计模式&#xff0c;帮助开发者将应用程序的业务逻辑、控制逻辑和表示层分离。以下是SpringMVC的工作原理及其核心组件的详细介绍…

Oracle数据库导入导出详解

在数据库管理和维护过程中&#xff0c;数据的导入与导出是常见的需求&#xff0c;特别是在数据迁移、备份或数据分析等场景下尤为重要。Oracle数据库作为企业级的数据库管理系统&#xff0c;提供了强大的数据导入导出工具。本文将详细介绍Oracle数据库中数据导入和导出的常用方…