贪婪算法


index-picture

贪婪算法:
选择局部最优解达到全局最优


区间调度问题

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

实现代码:

  def eraseOverlapIntervals(intervals):
      if len(intervals) == 0:
          return 0
      intervals.sort(key = lambda x : x[1])
      print (intervals)
      cur = 0
      count = 1
      for i in range(1, len(intervals)):
            if intervals[i][0] >= intervals[cur][1]:
                  count += 1
                  cur = i
      return len(intervals) - count

本题来源:力扣(LeetCode)

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 动态规划 && 贪婪算法 1· 剪绳子(14 剑指offer ) 需要先从 base case 开始寻找规律 ,...
    YOLO哈哈哈阅读 689评论 0 0
  • 贪婪算法是指,在对问题求解时,总是做出在当前看来是最好的选择。 也就是说,不从整体最优上加以考虑,他所做出的是在某...
    程序猪小羊阅读 2,821评论 1 1
  • 贪婪算法 教室调度问题:不同课程的开始和结束时间都不同,要如何安排这些棵,使得尽可能多的课被安排在某间教室? 1....
    投篮手型差阅读 711评论 0 0
  • 1.教室调度问题 一间教室的课程表如上所示,现在如果尽可能在这个教室上最多的课,需要怎么安排课程呢?由于课程之间有...
    小懒额阅读 812评论 0 0
  • 清点了三十几年来所写的日记 多少话语 都在静默中 躺着 等待开采
    爱上码砖的游戏一写作阅读 103评论 0 0