【算法日志】贪心算法刷题:重叠区问题(day31)

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

代码随想录刷题60Day


目录

前言

无重叠区间(筛选区间)

划分字母区间(切割区间)

 合并区间


前言

今日的重点是掌握重叠区问题。


无重叠区间(筛选区间)

【算法日志】贪心算法刷题:重叠区问题(day31),贪心算法,算法,leetcode

   int eraseOverlapIntervals(vector<vector<int>>& intervals) 
    {
        int count = 0;
        const int size = intervals.size();
        sort(intervals.begin(), intervals.end());
        for (int i = 0; i < size; ++i)
        {
            int right = intervals[i][1];
            int j;
            for (j = i + 1; j < size; ++j)
            {
                if (right > intervals[j][1])
                    right = intervals[j][1];
                else if (right <= intervals[j][0])
                    break;
            }
            i = j - 1;
            ++count;
        }
        return size - count;
    }

划分字母区间(切割区间)

【算法日志】贪心算法刷题:重叠区问题(day31),贪心算法,算法,leetcode

   vector<int> partitionLabels(string s) 
    {
        vector<int> result;
        const int size = s.length();
        int front = 0, back = size - 1;
        while(front < size)
        {
            while (s[front] != s[back])
                --back;
            if (front < back)
                for (int i = front + 1; i <= back; ++i)
                {
                    while (s[i] == s[i - 1])++i;
                    if (i > back) break;
                    int j  = size - 1;
                    while (j > back && s[i] != s[j])
                        j--;
                    back = j;
                }
            result.push_back(back - front + 1);
            front = back + 1;
            back = size - 1;
        }
        return result;
    }

 合并区间

【算法日志】贪心算法刷题:重叠区问题(day31),贪心算法,算法,leetcode文章来源地址https://www.toymoban.com/news/detail-663284.html

   vector<vector<int>> merge(vector<vector<int>>& intervals) 
    {
        vector<vector<int>> result;
        sort(intervals.begin(), intervals.end());
        int size = intervals.size();
        for (int i = 0; i < size; ++i)
        {
            int j;
            int right = intervals[i][1];
            for (j = i + 1; j < size; ++j)
            {
                if (right < intervals[j][0])
                    break;
                else
                    right = max(right, intervals[j][1]);
            }
            result.push_back({intervals[i][0], right});
            i = j - 1;
        }
        return result;
    }

到了这里,关于【算法日志】贪心算法刷题:重叠区问题(day31)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 代码随想录day31 贪心算法初探

            就像卡哥视频里说的一样,感觉贪心算法确实没什么固定的套路,唯一的思路就是求局部最优解然后推广到全局最优解,但是什么是局部最优解,这个需要慢慢做题来摸索总结,有点像调参,蛮玄学的,纯考脑子 假设你是一位很棒的家长,想要给你的孩子们一些

    2024年01月18日
    浏览(490)
  • 【贪心算法】leetcode刷题

    【贪心算法】leetcode刷题

    贪心算法无固定套路。 核心思想:先找局部最优,再扩展到全局最优。 两种思路: 1、从大到小。局部最优就是大饼干喂给胃口大的,充分利用饼干尺寸喂饱一个,全局最优就是喂饱尽可能多的小孩。 先遍历的胃口,在遍历的饼干 2、从小到大。 小饼干先喂饱小胃口 。两个

    2024年02月14日
    浏览(13)
  • day31贪心算法 用最少数量的箭引爆气球 和无重叠区间

    day31贪心算法 用最少数量的箭引爆气球 和无重叠区间

    题目描述 题目分析: x轴向上射箭,12一支,重叠的需要一支,3-8一支,7-16一支 返回2; 就是让重叠的气球尽量在一起,局部最优;用一支弓箭,全局最优就是最少弓箭; 如何去寻找重叠的气球?和记录弓箭数? 1.对所有气球排序;(左边界排序如上图); 2. if 如果第i个气

    2024年02月16日
    浏览(5)
  • day 1 LeetCode刷题日志

    day 1 LeetCode刷题日志

    今天的内容是 704 和 27 ovo 704. 二分查找 给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target 写一个函数搜索 nums 中的 target ,如果目标值存在返回下标,否则返回 -1 Myself C: Myself C++: Carl C++: Myself Sum: NOTICE 左闭右闭 左闭右开 C语言的int类型最大是10^9 C++的

    2024年02月03日
    浏览(9)
  • 算法刷题Day 31 分发饼干+摆动序列+最大子序列和

    分发饼干其实有很多种写法,但是下面这种贪心的解法是最好理解,也最好解释的 我的其他解法 贪心算法 这道题用贪心算法要考虑的细节有很多。 动态规划 有点难(甚至涉及到了线段树),等后面二刷的时候再来学好了 暴力解法 超时了 贪心算法 贪心算法的代码写起来简

    2024年02月15日
    浏览(10)
  • Day31 贪心算法 part01 理论基础 455.分发饼干 376.摆动序列 53.最大子序和

    Day31 贪心算法 part01 理论基础 455.分发饼干 376.摆动序列 53.最大子序和

    什么是贪心 贪心的本质是选择每一阶段的局部最优,从而达到全局最优 。 这么说有点抽象,来举一个例子: 例如,有一堆钞票,你可以拿走十张,如果想达到最大的金额,你要怎么拿? 指定每次拿最大的,最终结果就是拿走最大数额的钱。 每次拿最大的就是局部最优,最

    2024年01月19日
    浏览(13)
  • 算法练习Day26 (Leetcode/Python-贪心算法)

    122. Best Time to Buy and Sell Stock II You are given an integer array  prices  where  prices[i]  is the price of a given stock on the  ith  day. On each day, you may decide to buy and/or sell the stock. You can only hold  at most one  share of the stock at any time. However, you can buy it then immediately sell it on the  same day . Find and return 

    2024年02月03日
    浏览(12)
  • LeetCode刷题笔记【23】:贪心算法专题-1(分发饼干、摆动序列、最大子序和)

    LeetCode刷题笔记【23】:贪心算法专题-1(分发饼干、摆动序列、最大子序和)

    贪心的本质是选择每一阶段的局部最优,从而达到全局最优。 例如,有一堆钞票,你可以拿走十张,如果想达到最大的金额,你要怎么拿? 指定每次拿最大的,最终结果就是拿走最大数额的钱。 每次拿最大的就是局部最优,最后拿走最大数额的钱就是推出全局最优。 感觉像

    2024年02月09日
    浏览(14)
  • 算法训练day37|贪心算法 part06(LeetCode738.单调递增的数字)

    题目链接🔥🔥 给定一个非负整数 N,找出小于或等于 N 的最大的整数,同时这个整数需要满足其各个位数上的数字是单调递增。 (当且仅当每个相邻位数上的数字 x 和 y 满足 x = y 时,我们称这个整数是单调递增的。) 示例 1: 输入: N = 10 输出: 9 示例 2: 输入: N = 1234 输出:

    2024年02月09日
    浏览(11)
  • DAY31——贪心

    DAY31——贪心

    1.分发饼干   2.摆动序列   3.最大子序和  

    2024年02月11日
    浏览(5)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包