• leetcode56


    public class Solution
        {
            public IList<Interval> Merge(IList<Interval> intervals)
            {
                var len = intervals.Count;
                if (len == 1)
                {
                    return intervals;
                }
                var list = intervals.OrderBy(x => x.start).ToList();
                int i = 0;
                while (i < list.Count)
                {
                    int j = i;
                    while (i < list.Count - 1 && list[j].end >= list[i + 1].start)
                    {
                        //可以融合
                        //前项修改,后项删除
                        list[j].start = Math.Min(list[j].start, list[i + 1].start);
                        list[j].end = Math.Max(list[j].end, list[i + 1].end);
                        list.RemoveAt(i + 1);
                    }
                    i++;
                }
                return list;
            }
        }

    提供一个python版本的实现:

     1 class Solution:
     2     def merge(self, intervals: 'List[Interval]') -> 'List[Interval]':
     3         intervals = sorted(intervals,key=lambda x:[x[0],-x[1]])
     4         i = 0
     5         while i < len(intervals) - 1:
     6             curbegin = intervals[i][0]
     7             curend = intervals[i][1]
     8 
     9             nextbegin = intervals[i+1][0]
    10             nextend = intervals[i+1][1]
    11             if curend >= nextbegin:
    12                 intervals.pop(i)
    13                 intervals[i]=[min(curbegin,nextbegin),max(curend,nextend)]
    14             else:
    15                 i += 1
    16         return intervals
  • 相关阅读:
    外键的三种形式
    MySQl创建用户和授权
    Django模板系统
    Django 简介
    jQuery
    JavaScript的BOM和DOM
    JS中的关键字和保留字
    Git 源码管理工具简单入门
    Git使用
    常见的三种SQL分页方式
  • 原文地址:https://www.cnblogs.com/asenyang/p/9747123.html
Copyright © 2020-2023  润新知