算法:76.最小覆盖子串

news2024/11/13 10:11:55

题目

链接:leetcode链接
在这里插入图片描述

思路分析(滑动窗口)

还是老样子,连续问题,滑动窗口+哈希表

令t用的hash表为hash1,s用的hash表为hash2

利用hash表统计窗口内的个字符出现的个数,与hash1进行比较
选取符合情况的最小子串即可。

问题来了,该题目需要大量使用hash表比较,这是时间复杂度很高的,并不是和好,怎么去优化呢?

还是利用一个变量count去统计有效元素
详情见异位词的那道题
传送们:438.找到字符串中所有字母异位词

注意,这里有一点比较坑

这道题,最后要求我们返回的是子串,而不是下标,
一定要设置一个begin和len来标记子串,
而不要在过程中,每一次更新结果的时候都创建一个子串
不然内存会溢出,
样例里面有内存特别大的极端样例

代码

string minWindow(string s, string t) {
        int hash1[128] = {0};
        int hash2[128] = {0};

        for(auto& s:t) hash1[s]++;

        int count = 0;
        int len = INT_MAX,begin = -1;
        for(int left = 0,right = 0;right < s.size();++right)
        {
            char in = s[right];
            hash2[in]++;//进窗口
            if(hash2[in] <= hash1[in])count++;

            while(count >= t.size())
            {
                if(right - left + 1 < len)
                {
                    len = right - left + 1;
                    begin = left;
                }

                char out = s[left];
                if(hash2[out] <= hash1[out]) count--;
                hash2[out]--;
                left++;
            }
        }

        if(begin == -1)
        return "";
        return s.substr(begin,len);
    }

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

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

相关文章

SpringBoot 消息队列RabbitMQ在代码中声明 交换机 与 队列使用注解创建

创建Fanout交换机 Configuration public class FanoutConfig {Beanpublic FanoutExchange fanoutExchange(){return new FanoutExchange("csdn.fanout");//交换机名称} }创建队列 Beanpublic Queue fanoutQueue3(){return new Queue("csdn.queue");}绑定…

Nature Climate Change | 全球土壤微生物群落调控微生物呼吸对变暖的敏感性(Q10)

本文首发于“生态学者”微信公众号&#xff01; 全球变暖将加速有机物分解&#xff0c;从而增加土壤中二氧化碳的释放&#xff0c;触发正的碳-气候反馈。这种反馈的大小在很大程度上取决于有机质分解的温度敏感性(Q10)。Q10仍然是围绕土壤碳排放到大气的预测的主要不确定性来源…

软考架构-层次架构风格

一、两层C/S架构 客户端和服务器都有处理功能。处理在表示层&#xff08;客户端&#xff09;和数据层&#xff08;服务器&#xff09;进行 二、三层C/S架构 将处理功能独立出来。表示层在客户机上&#xff0c;功能层在应用服务器上&#xff0c;数据层在数据库服务器上。 三…

玄机科技浪漫绘情缘:海神缘下,一吻定情

在史莱克学院那片璀璨星空的见证下&#xff0c;《斗罗大陆II绝世唐门》第65集“海神缘相亲大会”的浪漫序幕&#xff0c;温柔地触动了每一位观众的心弦。 本集中&#xff0c;霍雨浩与王冬之间那段跨越重重障碍、终得相守的浪漫告白&#xff0c;在玄机科技独特的审美视角、精细…

强化学习Reinforcement Learning|Q-Learning|SARSA|DQN以及改进算法

一、强化学习RL 强化学习是机器学习的一个重要的分支&#xff0c;是一种有效的工具&#xff0c;在文献中被广泛用于解决MDP问题。在一个强化学习过程中&#xff0c;一个智能体只能通过和它所处的环境互动学习最优策略。特别地&#xff0c;智能体首先观察自己当前的状态&#xf…

JVM 内存模型:堆、栈、方法区讲解

1. 引言 Java 虚拟机&#xff08;JVM&#xff09;的内存模型是 Java 程序运行时的基础之一。JVM 内存模型主要包括 堆、栈、和 方法区。它们各自有不同的作用和管理方式&#xff0c;并且影响着程序的性能和稳定性。为了更好地理解 JVM 的内存管理机制&#xff0c;我们将结合电…

数据结构——串的定义及存储结构

串的定义 串&#xff08;string&#xff09;——零个或多个任意字符组成的有限序列串是内容受限的线性表 串的几个术语 子串&#xff1a;串中任意几个连续字符组成的子序列称为该串的子串&#xff08;真子串是指不包含自身的所有子串&#xff09;主串&#xff1a;包含子串的串…

学习笔记(一)

前言 一、对象 1、由类建模而成&#xff0c;是消息、数据和行为的组合 2、可以接收和发送消息&#xff0c;并利用消息进行彼此的交互。消息要包含传送给对象接收的信息 3、类的实例化&#xff1a;把类转换为对象的过程叫类的实例化。 4、对象的特性 (1) 对象有状态&#…

架构师知识梳理(七):软件工程-工程管理与开发模型

软件工程概述 软件开发生命周期 软件定义时期&#xff1a;包括可行性研究和详细需求分析过程&#xff0c;任务是确定软件开发工程必须完成的总目标&#xff0c;具体可分成问题定义、可行性研究、需求分析等。软件开发时期&#xff1a;就是软件的设计与实现&#xff0c;可分成…

解决VSCode文件的中文GBK和UTF-8编码之间乱码问题

NOTE&#xff1a;近日笔者在使用VSCode编码环境的时候&#xff0c;出现了中文和UTF-8两者之间乱码的问题&#xff0c;特编写本片文章&#xff0c;以作学习记录。 1.需求 用VSCode打开外部的GBK2312编码文件&#xff0c;想在VSCode中统一以UTF-8编码查看&#xff08;笔者推荐U…

作文网源码 范文论文网模板 带会员系统+支付接口+整站数据

织梦CMS仿某中国作文网源码,文章类网站源码数据采集&#xff0c;采集可能会失效哦&#xff0c;非常漂亮的模板程序。模板divcss设计&#xff0c;符合W3C标准&#xff0c;已做好SEO优化&#xff0c;收录爆增&#xff0c;排名好&#xff0c;模板清爽&#xff0c;漂亮。本站修复了…

Java | Leetcode Java题解之第405题数字转换为十六进制数

题目&#xff1a; 题解&#xff1a; class Solution {public String toHex(int num) {if (num 0) {return "0";}StringBuffer sb new StringBuffer();for (int i 7; i > 0; i --) {int val (num >> (4 * i)) & 0xf;if (sb.length() > 0 || val …

力扣每日一题 公交站间的距离

环形公交路线上有 n 个站&#xff0c;按次序从 0 到 n - 1 进行编号。我们已知每一对相邻公交站之间的距离&#xff0c;distance[i] 表示编号为 i 的车站和编号为 (i 1) % n 的车站之间的距离。 环线上的公交车都可以按顺时针和逆时针的方向行驶。 返回乘客从出发点 start 到目…

五、Kubernetes中的存储

目录 一 configmap 1.1 configmap的功能 1.2 configmap的使用场景 1.3 configmap创建方式 1.3.1 字面值创建 1.3.2 通过文件创建 1.3.3 通过目录创建 1.3.4 通过yaml文件创建 1.3.5 configmap的使用方式 1.3.5.1 使用configmap填充环境变量 1.3.5.2 通过数据卷使用c…

深度学习自编码器 - 引言篇

序言 在深度学习的浩瀚星空中&#xff0c;自编码器&#xff08; Autoencoder \text{Autoencoder} Autoencoder&#xff09;以其独特的魅力闪耀着光芒。作为一种无监督学习技术&#xff0c;自编码器通过构建输入数据的压缩表示&#xff08;编码&#xff09;及其重构&#xff08…

鸿蒙开发之ArkTS 基础八 联合类型

联合类型 是一个变量可以存储不同的数据类型 形式灵活 使用场景&#xff0c;比如&#xff0c;考试&#xff0c;结果有两种形式&#xff0c;一种是给出具体的多少分&#xff0c;一种是是给出A、B、C、D、这种等级&#xff0c;在之前的变量中&#xff0c;只能存储要么分数&#…

Docker简介在Centos和Ubuntu环境下安装Docker

文章目录 1.Docker简介2.Docker镜像与容器3.安装Docker3.1 Centos环境3.2 Ubuntu环境 1.Docker简介 Docker 是一个开源的应用容器引擎&#xff0c;它允许开发者将应用程序及其依赖项打包到一个可移植的容器中&#xff0c;然后发布到任何流行的 Linux 或 Windows 操作系统上。D…

强制类型转换有哪几种?

目录 1.static_cast 2.dynamic_cast 3.const_cast 4.reinterpret_cast 每种类型转换操作符都有其特定的应用场景和限制&#xff0c;应根据实际需求选择合适的转换方式。特别是 reinterpret_cast&#xff0c;由于它的类型安全性很低&#xff0c;使用时需格外小心。 1.static…

芜湖小孩自闭症寄宿制学校:释放潜能,开启未来

在探索儿童成长的无限可能中&#xff0c;有一群特别的孩子&#xff0c;他们以自己的节奏和方式感知着这个世界&#xff0c;那就是自闭症儿童。自闭症&#xff0c;一个逐渐为社会所熟知的领域&#xff0c;其背后承载着无数家庭的期望与挑战。在广州这座充满温情与活力的城市中&a…

成立LDAR检测公司的条件和投资额度(扩项)-泄漏检测与修复CMA认证

一、成立检验检测机构 1&#xff09;独立法人&#xff1a;营业执照&#xff08;经营范围包括检验检测机构服务的相关内容&#xff0c;不得有影响其检验检测活动公正性的经营项目&#xff0c;如&#xff1a;生产&#xff0c;销售等&#xff09; 2&#xff09;内设机构&#…