美文网首页
leetcode 56. 合并区间

leetcode 56. 合并区间

作者: fanchuang | 来源:发表于2020-03-23 22:53 被阅读0次
补充几点想法:
  1. 实际运行的部分很短,但是先后各种测试的过程,及其思路倒是有点漫长, 也是值得记录下来的。
  2. for 循环里面,不管你操作还是不操作,指针都是要走的,但是while里面,你可以拉住不让它走。
class Solution:
    def merge(self, intervals: List[List[int]]) -> List[List[int]]:
        # 自己独立完成的。
        # 对于这样一个例子 [[1,4],[4,5],[2,3]] 实际预期结果是 [1,5] 怎样调整????
        intervals.sort()
        if len(intervals) < 2:
            return intervals
        # ret = []

        # 这里有一种情况是,如果合并之后,还能继续合并的话,那么怎么处理呢? 外面再增加一层while 循环吗???
        # 其实这里已经是使用了额外的空间了。如果再原数组上直接修改呢。
        # while True:
        ret = []
        i = 0 
        # !!! 划一下重点!!!
        # 这里,如果当前2个区间能合并的话,指针就停留在这里。一直等待下一个来合并的元素。
        #  不能合并的话,才转到下一个。
        #  
        while i < len(intervals)-1:
            a,b = intervals[i]
            m,n = intervals[i+1]
            if m <= b:
                intervals[i] = [min(a,m), max(b,n)]
                intervals.pop(i+1)
            else:
                i += 1 
        # print(intervals)
        return intervals



        
        # while True:
        #     for i in range(len(intervals)-1):
        #         a,b = intervals[i]
        #         m,n = intervals[i+1]
                # if m <= b:
                #     ret.append([min(a,m), max(b,n)])
                #     intervals.pop(i)
                #     i += 1

                # if intervals[i+1][0] <= intervals[i][1]:
                # if m <=b:
                    # ret.append([a,n])
                    # intervals[i][1] = intervals[i+1][1]
            #         # intervals[i+1][0] = intervals[i][0]
            #         intervals[i] = [min(a,m), max(b,n)]
            #         intervals[i+1] = [min(a,m), max(b,n)]
                
            #     if intervals[i] not in ret:
            #         ret.append(intervals[i])
            #     # 这里的写法就很拙劣了。甚至是卑鄙啊
            #     if intervals[i+1] not in ret:
            #         ret.append(intervals[i+1])
            # print(intervals)   #     一圈之后还是需要再清洗的。
            # for i in intervals:
            #     if i not in ret:
            #         ret.append(i)
            
        #     if len(ret) == len(intervals):
        #         break 
        #     else:
        #         intervals = ret 

        # return ret 

            # else:
                # ret.append(intervals[i+1])
            # i += 1

            # 合并一圈之后,我们再来比较一下原数组的长度有没有被缩短
            # if len(ret) == len(intervals):
            #     break 
            # else:
            #     intervals = ret 


                   

        # # print(intervals)
        # for i in intervals:
        #     if i not in ret:
        #         ret.append(i)

        # return ret 

相关文章

  • Leetcode-56 合并区间

    56. 合并区间[https://leetcode-cn.com/problems/merge-intervals...

  • 【2】合并区间

    56.合并区间[https://leetcode.cn/problems/merge-intervals/]最初思...

  • LeetCode 56. 合并区间

    56. 合并区间 题目来源:https://leetcode-cn.com/problems/merge-inte...

  • 区间调度之区间合并问题

    读完本文,你可以去力扣拿下如下题目: 56.合并区间[https://leetcode-cn.com/proble...

  • 【Leetcode】56. 合并区间

    作者: 码蹄疾毕业于哈尔滨工业大学。 小米广告第三代广告引擎的设计者、开发者;负责小米应用商店、日历、开屏广告业务...

  • leetcode 56. 合并区间

    补充几点想法: 实际运行的部分很短,但是先后各种测试的过程,及其思路倒是有点漫长, 也是值得记录下来的。 for ...

  • leetcode题目56. 合并区间

    题目描述 链接:https://leetcode-cn.com/problems/merge-intervals/...

  • LeetCode 56 合并区间

    56. 合并区间 给出一个区间的集合,请合并所有重叠的区间。 示例 1: 输入: [[1,3],[2,6],[8,...

  • LeetCode:合并区间

    56. 合并区间 给出一个区间的集合,请合并所有重叠的区间。示例 1:输入: [[1,3],[2,6],[8,10...

  • LeetCode 力扣 56. 合并区间

    题目描述(中等难度) 给定一个列表,将有重叠部分的合并。例如[ [ 1 3 ] [ 2 6 ] ] 合并成 [ 1...

网友评论

      本文标题:leetcode 56. 合并区间

      本文链接:https://www.haomeiwen.com/subject/zxzgyhtx.html