【LeetCode】HOT 100(20)

news2024/11/25 22:38:49

题单介绍:

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

目录

题单介绍:

题目:621. 任务调度器 - 力扣(Leetcode)

题目的接口:

解题思路:

代码:

过过过过啦!!!!

题目:581. 最短无序连续子数组 - 力扣(Leetcode)

题目的接口:

解题思路:

代码:

过过过过啦!!!!

写在最后:


题目:621. 任务调度器 - 力扣(Leetcode)

题目的接口:

class Solution {
public:
    int leastInterval(vector<char>& tasks, int n) { 

    }
};

解题思路:

这道题的思路是这样的:

通过一个26大的数组存储任务数量(因为任务只有A~Z)

通过排序找到最大的任务数量

求出至少有多长:A->X->X->A->X->X->A

求最后一个任务还带着几个任务:A->X->X->A->X->X->A->?

如果任务的数量超过了间隔的数量,就直接返回任务数量:例:

比如说,有两个间隔,但是一个又四种任务,那任务又得全部做完,

那直接返回任务的数量就行了。

代码如下:

代码:

class Solution {
public:
    int leastInterval(vector<char>& tasks, int n) { 
        //如果间隔是0,或者只有一个(零个)任务,就直接返回
        if(tasks.size() <= 1 || n < 1) return tasks.size();

        //通过一个26大的数组存储任务数量(因为任务只有A~Z)
        vector<int> v(26, 0);
        for(int i = 0; i < tasks.size(); i++) {
            v[tasks[i] - 'A']++;
        }

        //通过排序找到最大的任务数量
        sort(v.begin(), v.end());
        int maxCnt = v[25];
        //求出至少有多长:A->X->X->A->X->X->A
        int maxVal = (maxCnt - 1) * (n + 1) + 1; 

        //求最后一个任务还带着几个任务:A->X->X->A->X->X->A->?
        int i = 24;
        while(i >= 0 && v[i] == maxCnt) {
            i--;
            maxVal++;
        }

        //如果任务的数量超过了间隔的数量,就直接返回任务数量
        return max(maxVal, (int)tasks.size());
    }
};

过过过过啦!!!!

题目:581. 最短无序连续子数组 - 力扣(Leetcode)

题目的接口:

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

    }
};

解题思路:

这道题我使用的就是O(N)的算法,

其实就是用双指针,

一个找右边界,一个找左边界,

具体思路是这样的:

1. 用来找右边界的指针从左往右走,记录遇到的最大值,

一直往右走遇到的最后一个最大值的前一个位置就是右边界;

2. 用来找左边界的指针从右往左走,记录遇到的最小值,

一直往左走遇到的最后一个最小值的前一个位置就是左边界。

代码如下:

代码:

class Solution {
public:
    int findUnsortedSubarray(vector<int>& nums) {
        int n = nums.size();
        int rMax = INT_MIN, right = -1;
        int lMax = INT_MAX, left = -1;
        for(int i = 0; i < n; i++) {
            if(rMax > nums[i]) {
                right = i;
            }
            else {
                rMax = nums[i];
            }
            if(lMax < nums[n - i - 1]) {
                left = n - i - 1;
            }
            else {
                lMax = nums[n - i - 1];
            }
        }
        return right == -1 ? 0 : right - left + 1;
    }
};

过过过过啦!!!!

写在最后:

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

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

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

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

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

相关文章

LeetCode·每日一题·2679. 矩阵中的和·排序

作者&#xff1a;小迅 链接&#xff1a;https://leetcode.cn/problems/sum-in-a-matrix/solutions/2330084/pai-xu-zhu-shi-chao-ji-xiang-xi-by-xun-g-a3gw/ 来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 著作权归作者所有。商业转载请联系作者获得授权&#xff0c;…

图书推荐管理系统Python,基于Django和协同过滤算法等实现

一、介绍 图书推荐系统 / 图书管理系统&#xff0c;以Python作为开发语言&#xff0c;基于Django实现&#xff0c;使用协同过滤算法实现对登录用户的图书推荐。 二、效果展示 三、演示视频 视频代码&#xff1a;https://www.yuque.com/ziwu/yygu3z/gq555ph49m9fvrze 四、Dj…

有什么事在Linux上顺理成章,在Windows就令人费解?

Linux与Windows都是十分常见的电脑操作系统&#xff0c;相信大家对它们二者都有所了解&#xff01;在我们的使用过程中&#xff0c;是否有遇到这种情况&#xff0c;在Linux上顺理成章&#xff0c;换到Windows上就令人费解&#xff1f; 文章目录 一、介绍2.1 Linux系统1.2 Wind…

第九十七天学习记录:Linux基础:实用操作Ⅱ

进程管理 进程 程序运行在操作系统中&#xff0c;是被操作系统所管理的。 为管理运行的程序&#xff0c;每一个程序在运行的时候&#xff0c;便被操作系统注册为系统中的一个&#xff1a;进程 并会为每一个进程都分配一个独有的&#xff1a;进程ID&#xff08;进程号&#xf…

机器人动力学与控制学习笔记(十六)——重复控制

十六、重复控制基本原理 16.1 重复控制理论 重复控制方法的目标是设计一个针对周期信号的跟踪控制器或者扰动补偿器&#xff0c;只需基于过去周期的误差信号&#xff0c;除了使用当前控制误差外&#xff0c;还“重复”使用了上一周期的误差&#xff0c;并与当前控制误差叠加在…

2023黑马头条.微服务项目.跟学笔记(三)

2023黑马头条.微服务项目.跟学笔记 三 自媒体文章发布1.自媒体前后端搭建1.1 后台搭建1.2 前台搭建 2.自媒体素材管理2.1 素材上传2.2.1 需求分析2.2.2 素材管理-图片上传-表结构2.2.3 实现思路2.2.4 接口定义2.2.5 自媒体微服务集成heima-file-starter2.2.6 具体实现 2.2 素材…

16 线程同步

文章目录 临界区MFC 临界区全部代码 事件内核对象信号量内核对象互斥量MFC 中设置只能有一个窗口 MFC线程通信 临界区 火车票买票问题 #include<stdio.h> #include <Windows.h>/* 临界区&#xff08;关键段&#xff09; */CRITICAL_SECTION g_cs;int g_count 500…

C++ day44

1、全局变量&#xff0c;int monster 10000;定义英雄类hero&#xff0c;受保护的属性string name&#xff0c;int hp,int attcKk;公有的无参构造&#xff0c;有参构造&#xff0c;虚成员函数void AtK()[blood-0,}&#xff0c;法师类继承自英雄类&#xff0c;私有属性int ap_at…

networkx

import networkx as nx import matplotlib.pyplot as plt# 创建一个空的无向图 G nx.Graph()# 添加节点 G.add_nodes_from([1, 2, 3, 4, 5])# 指定每个节点的位置 pos {1: (0, 0),2: (1, 1),3: (2, 0),4: (1, -1),5: (-1, -1)}# 添加边 G.add_edges_from([(1, 2), (1, 3), (1…

如何在家居行业运用IPD?

家居行业是我国国民经济重要的民生产业和具有显著国际竞争力的产业。家居家装是指对房屋的整体布局、风格、色彩及空间使用进行重新设定&#xff0c;整体的工程服务包含设计、建筑施工、建材生产、装饰及家具产品制造等&#xff0c;涉及装饰装修行业和制造业。家居家装行业内大…

【Redis三】主从复制、哨兵以及Cluster集群

主从复制、哨兵以及Cluster集群 1.Redis高可用2.Redis主从复制2.1 主从复制的作用2.2 主从复制流程 2.3 搭建Redis主从复制2.3.1 安装部署Redis2.3.2 验证主从复制结果 3.Redis哨兵模式3.1 哨兵模式概述3.2 哨兵模式的作用3.3 故障转移机制3.4 主节点的选举3.5 搭建Redis哨兵模…

布尔运算-基于CGAL的布尔运算

前言&#xff1a;vtk提供的布尔运算接口vtkBooleanOperationFilter或是其他的接口&#xff0c;都存在运行不稳定且速度慢的情况&#xff1b;本博文主要使用CGAL库对布尔运算进行优化&#xff0c;希望给各位小伙伴有所帮助&#xff01; CAGL开源库 介绍 CGAL 是一个软件项目&a…

云原生之深入解析Docker容器的网络及其配置

一、Docker 容器网络 Docker 在安装后自动提供 3 种网络&#xff0c;可以使用 docker network ls 命令查看&#xff1a; [rootlocalhost ~]# docker network ls NETWORK ID NAME DRIVER SCOPE cd97bb997b84 bridge …

图像的基础操作

1.获取并修改图像中的像素值 img np.zeros((256, 256, 3), np.uint8) # 创建图像px img[100, 100] # 获取&#xff08;100&#xff0c;100&#xff09;点的像素值 blue img[100, 100, 0] # 仅获取&#xff08;100&#xff0c;100&#xff09;蓝色通道的像素值 …

图像的几何变换

1.图像的缩放 用途&#xff1a;对图像的大小尺寸进行调整&#xff0c;使图像放大或缩小。 代码&#xff1a; import cv2 as cvimg cv.imread(img.jpg)rows, cols img.shape[:2]# 使用绝对坐标 res cv.resize(img, (2 * cols, 2 * rows), interpolationcv.INTER_CUBIC)# 使…

面对“神奇的甲方”:如何应对匪夷所思的需求

在工作中&#xff0c;我们常常会遇到一些“神奇的甲方”&#xff0c;他们总是能给我们带来匪夷所思甚至无厘头的需求。本文将分享作者的经历&#xff0c;并提供一些建议&#xff0c;帮助读者应对这些“无理的需求”。 文章目录 方向一&#xff1a;分享那些你遇到的无理需求方向…

音轨分离 spleeter

https://www.cnblogs.com/ytxwzqin/p/12673661.htmlhttps://www.cnblogs.com/ytxwzqin/p/12673661.html伴奏提取福音&#xff0c;人声分离框架Spleeter1、引言对于制作人、DJ以及任何想分离音频进行单独演奏的人来说&#xff0c;将已经混音后的歌曲拆分为人声和伴奏一直是较为h…

Dirichlet Process 1

如下图的一个简单样本&#xff0c;如果我们不知道图中的样本是出自几个高斯分布&#xff0c;那我们如果求这个图中的样本应该归属于几个高斯分布那&#xff1f;直观看上去&#xff0c;有同学可能说是4个&#xff0c;有同学可能说是2个&#xff0c;然而如果是高维数据那&#xf…

2023年艺术品和古董行业研究报告

第一章 行业概况 艺术品通常指的是创造出来为了表达审美、情感或思想的物品&#xff0c;如绘画、雕塑、照片、装置艺术等。艺术品的价值常常来自于它的创新性、技术精湛以及艺术表达的深度和力度。此外&#xff0c;艺术家的名气和作品的历史背景也会影响其价值。 古董则通常指…

Dev C++ 建立项目 导入代码

首先 建立项目 文件->新建->建项目 会自己添加一个main.cpp 的文件&#xff0c;不需要的话&#xff0c;可以右键移除文件。 往项目里添加文件&#xff1b; 添加后&#xff1a; 编译运行&#xff0c;成功&#xff1b;