【LeetCode】HOT 100(12)

news2024/12/23 4:10:56

题单介绍:

精选 100 道力扣(LeetCode)上最热门的题目,适合初识算法与数据结构的新手和想要在短时间内高效提升的人,熟练掌握这 100 道题,你就已经具备了在代码世界通行的基本能力。

目录

题单介绍:

题目:75. 颜色分类 - 力扣(Leetcode)

题目的接口:

解题思路:

代码:

过过过过啦!!!!

题目:76. 最小覆盖子串 - 力扣(Leetcode)

题目的接口:

解题思路:

代码:

过过过过啦!!!!

写在最后:


题目:75. 颜色分类 - 力扣(Leetcode)

题目的接口:

class Solution {
public:
    void sortColors(vector<int>& nums) {

    }
};

解题思路:

这道题最简单的方法当然是直接排序啦:

class Solution {
public:
    void sortColors(vector<int>& nums) {
        sort(nums.begin(), nums.end());
    }
};

但是题目说不允许我们直接排序,

还提出了一个进阶的要求,让我们遍历一遍就完成排序,

那么我的思路就是,直接遍历数组,

遇到0就放到最前面,遇到1就继续往后走,遇到2就放到最后面。

我们将右边界作为我们循环结束的条件即可

代码如下:

代码:

class Solution {
public:
    void sortColors(vector<int>& nums) {
        int left = 0, right = nums.size() - 1;
        int i = 0;
        while(i <= right) {
            if(nums[i] == 0) {
                swap(nums[i], nums[left]);
                i++;
                left++;
            }
            else if(nums[i] == 1) i++;
            else { //nums[i] == 2
                swap(nums[i], nums[right]);
                right--;
            }
        }
    }
};

过过过过啦!!!!

题目:76. 最小覆盖子串 - 力扣(Leetcode)

题目的接口:

class Solution {
public:
    string minWindow(string s, string t) {

    }
};

解题思路:

这道题,看到子串匹配,寻找最小子串,

我不由自主的就能想到滑动窗口,

这样问题就简化成了:

只要我们能找到滑动窗口的更新边界的规则就行,

1. 找到能够匹配的字母就开始更新边界,

2. 用count记录子串什么时候被匹配完,

3. 当子串被匹配完了,更新左边界。

直接安装上面的三步思路实现代码即可。

代码如下:

代码:

class Solution {
public:
    string minWindow(string s, string t) {
        unordered_map<char, int> need, window;
        for(auto& e : t) need[e]++; //需要匹配的子串进need哈希
        int left = 0, right = 0, len = INT_MAX, start = 0, count = 0;
        while(right < s.size()) { //遍历
            if(need.find(s[right]) != need.end()) { //如果找到能匹配的字母
                window[s[right]]++; //更新右边界
                if(window[s[right]] == need[s[right]]) { //记录需要匹配的子串匹配完了没
                    count++;
                }
            }
            while(count == need.size()) { //如果子串匹配完了
                if(len > right - left + 1) { //更新最短子串
                    start = left; //新最短子串的起始位置
                    len = right - left + 1; //新最短子串的长度
                }
                if(need.find(s[left]) != need.end()) { //如果还有左边界
                    if(need[s[left]] == window[s[left]]) { //且左边界是需要匹配的子串
                        count--; //减少计数,就能继续更新右边界了
                    }
                    window[s[left]]--; //更新左边界
                } 
                left++; //更新左边界
            }
            right++; //遍历
        }
        return len == INT_MAX ? "" : s.substr(start, len);
    }
};

过过过过啦!!!!

写在最后:

以上就是本篇文章的内容了,感谢你的阅读。

如果感到有所收获的话可以给博主点一个哦。

如果文章内容有遗漏或者错误的地方欢迎私信博主或者在评论区指出~

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

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

相关文章

佩戴比较舒适的蓝牙耳机有哪些?值得入手的蓝牙耳机分享

​对于年轻人来说&#xff0c;耳机使用场景丰富&#xff0c;时尚追求度高&#xff0c;喜好的音乐类型也是多种多样&#xff0c;需求侧重也不尽相同。下面我来推荐几款相当不错的蓝牙耳机给大家&#xff0c;总会有喜欢那款&#xff01; 一、南卡OE蓝牙耳机 佩戴舒适度打分&…

【QQ界面展示-设置消息正文的背景图 Objective-C语言】

一、咱们上午说到哪儿了,还记得吗, 1.咱们上午是不是说到这儿了,可以显示正文、可以显示文字、并且,设置好背景图片了, 现在的问题就是,正文里面的文字,是不是超出这个图片了, 正文里面的文字,超出背景图片了, 那么,接下来,就给大家看一下,怎么解决这个问题, …

Macbook Pro双系统装Window10后设置触摸屏滑动方向

最近想给自己的Macbook Pro装Windows10操作系统&#xff0c;毕竟Windows才是真正的生产力工具&#xff0c;装了以后不需要两台笔记本了&#xff0c;直接在一台笔记本上有MacOS和Windows 装好以后发现触摸屏不能轻点触控还有触摸屏的滑动方向是反的 第一个问题&#xff0c;不能轻…

Ansys Zemax | 如何在序列模式下模拟分光棱镜

概述 这篇文章介绍了&#xff1a; 如何在序列模式下使用多重结构创建分光棱镜 如何在布局图以及分析/计算窗口中同时追迹透射和反射光线 在考虑偏振及镀膜的影响下如何计算透射和反射光线的总能量 &#xff08;联系我们获取文章附件&#xff09; 介绍 在 OpticStudio 中…

xxlJob任务管理平台500:xxl-job remoting error(connect timed out)

目录 一、问题截图 二、问题处理 2.1.查看执行器地址 2.2.查看本地端口 2.3.总结 三、关于地址的题外话 一、问题截图 此时可以看到code500&#xff0c;msg是连接超时&#xff0c;说明地址不通&#xff0c;那就是查看地址配置。 二、问题处理 2.1.查看执行器地址 …

使用CloudOS帮助企业落地云原生PaaS平台

PaaS究竟是什么&#xff1f; IaaS、SaaS的定义很清楚&#xff0c;而PaaS的定义就比较宽泛。所以&#xff0c;很多人把PaaS当做一个万能的“框”&#xff0c;什么都往里装&#xff0c;特别像一排垃圾桶中的那个“其他垃圾”桶&#xff0c;当你拎了一袋垃圾&#xff0c;不知道往…

C++技能 ( 3 ) - 详解泛型模版和特化模版的使用【函数模版、类模版、模版全特化、模版局部特化、可变参数模版、模版模版参数】

系列文章目录 C技能系列 C高性能优化编程系列 深入理解软件架构设计系列 高级C并发线程编程 期待你的关注哦&#xff01;&#xff01;&#xff01;有更多博文系列等着看哦&#xff0c;会经常更新&#xff01;&#xff01;&#xff01; 因为你的关注激励着我的创作&#xff01…

网安云新品速递 | 移动应用安全检测服务,为App合规与安全保驾护航

移动应用安全攻击层出不穷 近年来&#xff0c;移动应用安全攻击事件频发&#xff0c;衍生出的用户数据安全问题&#xff0c;也逐渐成为用户、社会&#xff0c;乃至整个国家高度重视的问题。立法层面上&#xff0c;数据安全保护不断加强&#xff1b;监管层面上&#xff0c;相关…

当亲戚知道我是程序员后,对我一顿梭哈……

当亲戚知道我是程序员后&#xff1a; 有的让我修电脑&#xff1b; 有的让我PS&#xff1b; 有的让我扯网线&#xff1b; 有的让我搞路由器&#xff1b; 这次的亲戚&#xff0c;让我干起了老本行&#xff1a;软件开发。 他是做人力资源公司的&#xff0c;要让我开发个招聘…

Spark SQL数据源 - 基本操作

文章目录 一、案例演示读取Parquet文件二、在Spark Shell中演示课堂练习1、将4.1节的student.txt文件转换成student.parquet课堂练习2、读取student.parquet文件得到学生数据帧&#xff0c;并显示数据帧内容三、在IntelliJ IDEA里演示 一、案例演示读取Parquet文件 执行命令&a…

#提升开源项目质量与效率:使用 GitHub Actions 自动化流程

提升开源项目质量与效率&#xff1a;使用 GitHub Actions 自动化流程 简介&#xff1a; 在开源项目中&#xff0c;质量和效率是至关重要的因素。本文将介绍如何利用 GitHub Actions&#xff0c;结合 ChatGPT Code Review、Autofix、Codecov 和 Publish PyPI 四个强大的 Actio…

unbound配置cache服务器

unbound 安装unbound配置unbound生成DOT证书配置日志监听哪个IP允许哪些客户端查询配置转发DNSSEC开启domain-insecure生成密钥 检查配置查看缓存启动Unbound服务&#xff1a; 结果验证方法1&#xff1a;方法2: 排错方法 安装unbound 以下是将DNS over TLS&#xff08;DoT&…

一文吃透Spring集成MyBatis

个人主页&#xff1a; 几分醉意的CSDN博客_传送门 文章目录 &#x1f496;集成思路✨怎么使用MyBatis✨集成的步骤✨pom加入依赖✨创建MyBatis使用代码✨创建Service类✨创建Spring配置文件和测试集成MyBatis✨使用外部属性配置文件 &#x1f496;图书推荐 Java28岁了&#xff…

CRC校验(2):CRC32查表法详解、代码实现和CRC反转

对于现在的CPU来说&#xff0c;基本上都在硬件上实现了CRC校验。但我们还是想用软件来实现一下CRC的代码&#xff0c;这样可以更深入地理解里面的原理。所以这一节就来详细地解释如何使用查表法从软件上来实现CRC-32的校验。另外&#xff0c;CRC还有一种反转的情况&#xff0c;…

SpringCloud Ribbon负载均衡(十一)

前面搭建了初步例子&#xff0c;但是还没实现真正负载均衡&#xff0c;我们这里要先搞三个服务提供者集群&#xff0c;然后才能演示负载均衡&#xff0c;以及负载均衡策略&#xff1b; 新建项目microservice-student-provider-1002&#xff0c;microservice-student-provider-…

行星减速机优势有哪些?行星减速机五大优势

减速机是动力传动解决方案&#xff0c;通过选择高质量和高效率的变速箱&#xff0c;绝对可以提高整个动力传动系统的效率和性能。行星减速机有哪些优势呢&#xff1f; 1.保证灵活可靠的动力传动系统 减速机提供了广泛的功率和比率&#xff0c;使其成为许多行业的大多数应用的完…

代码随想录2刷|链表1.链表理论基础2移除链表元素3.设计链表4.翻转链表5.两两交换链表中的节点6.删除链表的倒数第N个节点7.链表相交8.环形链表lI

2移除链表元素 链接&#xff1a;力扣 一刷&#xff1a; /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() : val(0), next(nullptr) {}* ListNode(int x) : val(x), next(nullptr) {}* ListNode(int x…

Vue中如何进行地理位置搜索与地点选择

Vue中如何进行地理位置搜索与地点选择 随着移动互联网和定位技术的普及&#xff0c;地理位置搜索和地点选择成为了很多应用程序中必不可少的功能。在Vue中&#xff0c;我们可以使用一些开源的地图API和第三方组件来实现这些功能。本文将介绍如何在Vue中进行地理位置搜索和地点…

【北邮国院大三下】Logistics and Supply Chain Management 物流与供应链管理 Week3

北邮国院大三电商在读&#xff0c;随课程进行整理知识点。仅整理PPT中相对重要的知识点&#xff0c;内容驳杂并不做期末突击复习用。个人认为相对不重要的细小的知识点不列在其中。如有错误请指出。转载请注明出处&#xff0c;祝您学习愉快。 如需要pdf格式的文件请私信联系或…

gradlew test 失败

前言 在idea内执行./gradlew test&#xff0c;发现如下报错&#xff1a; Could not initialize class org.codehaus.groovy.runtime.InvokerHelper 分析 google了一堆&#xff0c;说要用groovy&#xff0c;可是我没有用groovy&#xff0c;以前也是正常启动的。后来无意发现&a…