区间覆盖问题

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

区间覆盖问题,一般可以抽象为给定一些小区间区间覆盖问题,leetcode,贪心算法,leetcode,动态规划,Powered by 金山文档,从中选择一些区间,能够覆盖区间覆盖问题,leetcode,贪心算法,leetcode,动态规划,Powered by 金山文档,求最少选择多少个小区间的问题。

一般有两种做法: 贪心、动态规划。

贪心

贪心法基于这样的考虑:

因为x=s这个点是必须要被覆盖的,在可以覆盖到s的小区间里,选择右端点最大的小区间,是最优解。之后每一次,在左端点可达的小区间里,都选择右端点最大的区间,这样迭代下来,选出的小区间是最优解。

注意每次都要选择左端点可达的小区间,这个条件是完成覆盖的前提。

因此,首先排除掉所有区间覆盖问题,leetcode,贪心算法,leetcode,动态规划,Powered by 金山文档的小区间,这些小区间肯定不是可达的。之后将所有小区间按照左端点进行排序,第一步左端点可达的小区间是所有包含x=s的区间。之后每次迭代都按照相同的策略进行。

简化起见,假设排序后第一个小区间能够覆盖s。

那么可以写出伪代码如下:

public int solve(int[][] intervals, int s, int e){
    //按左端点排序
    Arrays.sort(intervals, Comparators.compareInt(o -> o[0]);
    //l:能覆盖的左端点,每次迭代中满足 si <= l 的小区间被认为是可达的。
    //r:能覆盖的右端点。
    //idx: 遍历intervals数组的下标。
    int l = 0, r = 0, idx = 0, n = intervals.length;
    while(r < e && idx < n){
        //遍历所有可达的小区间,找到能向右覆盖的最大范围
        while(idx < n && intervals[idx][0] <= l){
            r = Math.max(r, intervals[idx][1];
        }
        //无法再向右覆盖,无解
        if(l == r){
            return -1;
        }
        //这一轮迭代结束
        l = r;
        ans++;
    }
    return r >= e ? ans : -1; 
}

动态规划

动态规划的转移推导如下:

首先同样按照左端点将所有小区间排序。

假设区间覆盖问题,leetcode,贪心算法,leetcode,动态规划,Powered by 金山文档是能够覆盖区间覆盖问题,leetcode,贪心算法,leetcode,动态规划,Powered by 金山文档的最少区间数量,此时新增一个小区间区间覆盖问题,leetcode,贪心算法,leetcode,动态规划,Powered by 金山文档,能够覆盖区间覆盖问题,leetcode,贪心算法,leetcode,动态规划,Powered by 金山文档,也就是满足区间覆盖问题,leetcode,贪心算法,leetcode,动态规划,Powered by 金山文档,那么可以得到转移公式

区间覆盖问题,leetcode,贪心算法,leetcode,动态规划,Powered by 金山文档

初始区间覆盖问题,leetcode,贪心算法,leetcode,动态规划,Powered by 金山文档,其余点都设置为INF表示不可达。之后只需要遍历每一个小区间区间覆盖问题,leetcode,贪心算法,leetcode,动态规划,Powered by 金山文档,从左向右更新文章来源地址https://www.toymoban.com/news/detail-698908.html

到了这里,关于区间覆盖问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • LeetCode_贪心算法_中等_763.划分字母区间

    给你一个字符串 s 。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。注意,划分结果需要满足:将所有划分结果按顺序连接,得到的字符串仍然是 s。返回一个表示每个字符串片段的长度的列表。 示例 1: 输入:s = “ababcbacadefegdehijhklij” 输出

    2024年02月14日
    浏览(30)
  • java实现0-1背包问题方案(动态规划-贪心算法-回溯-分支定界)

    动态规划算法时间复杂度较低,能够求解较大规模的问题,但空间复杂度较高,不适用于数据量较大的问题。 贪心算法时间复杂度较低,能够求解较大规模的问题,但不能保证求得的解是最优解。 回溯算法能够求解较小规模的问题,但时间复杂度较高,不适用于数据量较大

    2024年02月01日
    浏览(92)
  • 算法训练day36|贪心算法 part05(重叠区间三连击:LeetCode435. 无重叠区间763.划分字母区间56. 合并区间)

    题目链接🔥🔥 给定一个区间的集合,找到需要移除区间的最小数量,使剩余区间互不重叠。 注意: 可以认为区间的终点总是大于它的起点。 区间 [1,2] 和 [2,3] 的边界相互“接触”,但没有相互重叠。 示例 1: 输入: [ [1,2], [2,3], [3,4], [1,3] ] 输出: 1 解释: 移除 [1,3] 后,剩下的区

    2024年02月09日
    浏览(39)
  • 湘潭大学 算法设计与分析实验 回溯 动态规划 贪心 模拟退火解决背包问题

    https://download.csdn.net/download/SQ_ZengYX/88620871 测试用例

    2024年02月02日
    浏览(46)
  • 贪心算法(区间问题)

    有一些球形气球贴在一堵用 XY 平面表示的墙面上。墙面上的气球记录在整数数组 points ,其中 points[i] = [xstart, xend] 表示水平直径在 xstart 和 xend 之间的气球。你不知道气球的确切 y 坐标。 一支弓箭可以沿着 x 轴从不同点 完全垂直 地射出。在坐标 x 处射出一支箭,若有一个气

    2024年03月11日
    浏览(60)
  • 【LeetCode题目详解】第八章 贪心算法 part05 435. 无重叠区间 763.划分字母区间 56. 合并区间 (day36补)

    给定一个区间的集合  intervals  ,其中 intervals[i] = [starti, endi]  。返回 需要移除区间的最小数量,使剩余区间互不重叠  。 示例 1: 示例 2: 示例 3: 提示: 1 = intervals.length = 105 intervals[i].length == 2 -5 * 104 = starti  endi = 5 * 104 相信很多同学看到这道题目都冥冥之中感觉要排序,但

    2024年02月11日
    浏览(29)
  • 【LeetCode:1402. 做菜顺序 | 动态规划 + 贪心】

    🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,CSDN-Java领域新星创作者🏆,保研|国家奖学金|高中学习JAVA|大学完善JAVA开发技术栈|面试刷题|面经八股文

    2024年02月07日
    浏览(28)
  • 区间图着色问题:贪心算法设计及实现

    在本文中,我们将探讨如何使用贪心算法解决一个特定的资源分配问题,即区间图着色问题。该问题可以描述为将一系列活动分配到最少数量的教室中,其中任意活动都可以在任意教室进行,但两个不兼容的活动不能安排在同一教室。我们将通过构造一个区间图来模拟这一问

    2024年04月27日
    浏览(29)
  • 算法 - 动态规划 / 贪心算法

    🥂 🌸 121. 买卖股票的最佳时机 [数组] [股票] (动态规划) 🥂 🌸 122. 买卖股票的最佳时机Ⅱ [数组] [股票] (动态规划) 🥂 🌸 123. 买卖股票的最佳时机Ⅲ [数组] [股票] (动态规划) 🥂 🌸 188. 买卖股票的最佳时机Ⅳ [数组] [股票] (动态规划) 🥂 🌸 309. 买卖股票的最佳时机含冷冻

    2024年01月17日
    浏览(30)
  • 贪心算法和动态规划

      目录 一、简介 二、贪心算法案例:活动选择问题 1.原理介绍 三、动态规划案例:背包问题 1.原理介绍 四、贪心算法与动态规划的区别 五、总结 正则表达式-CSDN博客 深入理解HashMap:Java中的键值对存储利器-CSDN博客   贪心算法和动态规划是两种非常强大的算法设计策略,

    2024年02月05日
    浏览(28)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包