【LeetCode】HOT 100(20)

这篇具有很好参考价值的文章主要介绍了【LeetCode】HOT 100(20)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

题单介绍:

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

目录

题单介绍:

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

题目的接口:

解题思路:

代码:

过过过过啦!!!!

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

题目的接口:

解题思路:

代码:

过过过过啦!!!!

写在最后:


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

【LeetCode】HOT 100(20),LeetCode HOT 100,leetcode,算法,c++

题目的接口:

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());
    }
};

过过过过啦!!!!

【LeetCode】HOT 100(20),LeetCode HOT 100,leetcode,算法,c++

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

【LeetCode】HOT 100(20),LeetCode HOT 100,leetcode,算法,c++

题目的接口:

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;
    }
};

过过过过啦!!!!

【LeetCode】HOT 100(20),LeetCode HOT 100,leetcode,算法,c++

写在最后:

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

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

如果文章内容有遗漏或者错误的地方欢迎私信博主或者在评论区指出~文章来源地址https://www.toymoban.com/news/detail-567207.html

到了这里,关于【LeetCode】HOT 100(20)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【LeetCode】HOT 100(23)

    精选 100 道力扣(LeetCode)上最热门的题目,适合初识算法与数据结构的新手和想要在短时间内高效提升的人,熟练掌握这 100 道题,你就已经具备了在代码世界通行的基本能力。 目录 题单介绍: 题目:448. 找到所有数组中消失的数字 - 力扣(Leetcode) 题目的接口: 解题思路

    2024年02月12日
    浏览(58)
  • 【LeetCode】HOT 100(11)

    精选 100 道力扣(LeetCode)上最热门的题目,适合初识算法与数据结构的新手和想要在短时间内高效提升的人,熟练掌握这 100 道题,你就已经具备了在代码世界通行的基本能力。 目录 题单介绍: 题目:64. 最小路径和 - 力扣(Leetcode) 题目的接口: 解题思路: 代码: 过过过

    2024年02月15日
    浏览(42)
  • 【LeetCode】HOT 100(26)

    精选 100 道力扣(LeetCode)上最热门的题目,适合初识算法与数据结构的新手和想要在短时间内高效提升的人,熟练掌握这 100 道题,你就已经具备了在代码世界通行的基本能力。 目录 题单介绍: 题目:394. 字符串解码 - 力扣(Leetcode) 题目的接口: 解题思路: 代码: 过过

    2024年02月15日
    浏览(41)
  • 【LeetCode】HOT 100(14)

    精选 100 道力扣(LeetCode)上最热门的题目,适合初识算法与数据结构的新手和想要在短时间内高效提升的人,熟练掌握这 100 道题,你就已经具备了在代码世界通行的基本能力。 目录 题单介绍: 题目:85. 最大矩形 - 力扣(Leetcode) 题目的接口: 解题思路: 代码: 过过过过

    2024年02月16日
    浏览(39)
  • 【LeetCode】HOT 100(22)

    精选 100 道力扣(LeetCode)上最热门的题目,适合初识算法与数据结构的新手和想要在短时间内高效提升的人,熟练掌握这 100 道题,你就已经具备了在代码世界通行的基本能力。 目录 题单介绍: 题目:538. 把二叉搜索树转换为累加树 - 力扣(Leetcode) 题目的接口: 解题思路

    2024年02月13日
    浏览(43)
  • 【LeetCode】HOT 100(18)

    精选 100 道力扣(LeetCode)上最热门的题目,适合初识算法与数据结构的新手和想要在短时间内高效提升的人,熟练掌握这 100 道题,你就已经具备了在代码世界通行的基本能力。 目录 题单介绍: 题目:148. 排序链表 - 力扣(Leetcode) 题目的接口: 解题思路: 代码: 过过过

    2024年02月15日
    浏览(40)
  • LeetCode 热题 HOT 100

    重点是当有一个链表为空了不单独处理,按节点为0处理。 滑动窗口! 首先要判断slow需不需要更新,怎么判断?slow = max(umap[s[fast]], slow);什么意思,就是说:**umap[s[fast]]的意义是,为了在slow和fast之间不出现重复字符,slow能处于的最左位置。**如图,当j第一次到d,将umap[s[j

    2024年02月07日
    浏览(47)
  • 【LeetCode】HOT 100(12)

    精选 100 道力扣(LeetCode)上最热门的题目,适合初识算法与数据结构的新手和想要在短时间内高效提升的人,熟练掌握这 100 道题,你就已经具备了在代码世界通行的基本能力。 目录 题单介绍: 题目:75. 颜色分类 - 力扣(Leetcode) 题目的接口: 解题思路: 代码: 过过过过

    2024年02月09日
    浏览(55)
  • 【LeetCode】HOT 100(15)

    精选 100 道力扣(LeetCode)上最热门的题目,适合初识算法与数据结构的新手和想要在短时间内高效提升的人,熟练掌握这 100 道题,你就已经具备了在代码世界通行的基本能力。 目录 题单介绍: 题目:98. 验证二叉搜索树 - 力扣(Leetcode) 题目的接口: 解题思路: 代码:

    2024年02月11日
    浏览(64)
  • 【LeetCode】HOT 100(2)

    精选 100 道力扣(LeetCode)上最热门的题目,适合初识算法与数据结构的新手和想要在短时间内高效提升的人,熟练掌握这 100 道题,你就已经具备了在代码世界通行的基本能力。 目录 题单介绍: 题目:5. 最长回文子串 - 力扣(Leetcode) 题目的接口: 解题思路: 代码: 过过

    2024年02月09日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包