zoukankan      html  css  js  c++  java
  • [leetcode]Insert Interval @ Python

    原题地址:https://oj.leetcode.com/problems/insert-interval/

    题意:

    Given a set of non-overlapping intervals, insert a new interval into the intervals (merge if necessary).

    You may assume that the intervals were initially sorted according to their start times.

    Example 1:
    Given intervals [1,3],[6,9], insert and merge [2,5] in as [1,5],[6,9].

    Example 2:
    Given [1,2],[3,5],[6,7],[8,10],[12,16], insert and merge [4,9] in as [1,2],[3,10],[12,16].

    This is because the new interval [4,9] overlaps with [3,5],[6,7],[8,10].

    解题思路:最简单的方法是将要插入的区间和原来的区间合在一起排序,然后按照merge intervals的方法来编程。

    代码:

    # Definition for an interval.
    # class Interval:
    #     def __init__(self, s=0, e=0):
    #         self.start = s
    #         self.end = e
    
    class Solution:
        # @param intervals, a list of Intervals
        # @param newInterval, a Interval
        # @return a list of Interval
        # @should rewrite without sort!!!
        def insert(self, intervals, newInterval):
            intervals.append(newInterval)
            intervals.sort(key = lambda x:x.start)
            length=len(intervals)
            res=[]
            for i in range(length):
                if res==[]:
                    res.append(intervals[i])
                else:
                    size=len(res)
                    if res[size-1].start<=intervals[i].start<=res[size-1].end:
                        res[size-1].end=max(intervals[i].end, res[size-1].end)
                    else:
                        res.append(intervals[i])
            return res
  • 相关阅读:
    最小生成树——prim
    最短路径——floyd(多源最短路径)
    最短路径——Dijkstra(简易版)
    图的遍历——BFS(队列实现)
    图的遍历——DFS(邻接矩阵)
    图的创建——十字链表
    图的创建——邻接表法
    图的创建——邻接矩阵
    队列——链表实现
    队列——数组实现(循环队列)
  • 原文地址:https://www.cnblogs.com/zuoyuan/p/3782048.html
Copyright © 2011-2022 走看看