• Merge Overlapping Intervals


    refer to: https://www.algoexpert.io/questions/Merge%20Overlapping%20Intervals


    Problem Statement

    Sample example

    Analysis

    step 1: sort the intervals by their start value

    step 2: check if the end value of the previous interval is larger than the start value of the latter interval

    Code

    def mergeOverlappingIntervals(intervals):
        # sort the intervals by startinf value.  O(nlogn)
        sortedIntervals = sorted(intervals, key = lambda x: x[0])
        
        mergedIntervals = []# space: O(n)
        currentInterval = sortedIntervals[0]#initialize the currentInterval as the first interval of the intervals
        mergedIntervals.append(currentInterval)#initialize the mergedIntervals as the first interval of the intervals
        
        for nextInterval in sortedIntervals:# for the first iteration, no update
            _, currentIntervalEnd = currentInterval
            nextIntervalStart, nextIntervalEnd = nextInterval
            
            if currentIntervalEnd >= nextIntervalStart: # overlap found, update the end value of interval
                currentInterval[1] = max(currentIntervalEnd, nextIntervalEnd)
            else: # no overlap, add the current(nextInterval) into the mergedIntervals array
                currentInterval = nextInterval
                mergedIntervals.append(currentInterval)
        return mergedIntervals

    Time and Space complexity

    O(nlogn) time complexity for sorting

    O(n) space complexity for store the mergedIntervals(upper bound, all intervals kept)

     

  • 相关阅读:
    买不到的数目
    逆波兰表达式
    颠倒的价牌
    排它平方数
    寒假作业
    搭积木
    网友年龄
    九宫重排
    格子刷油漆
    高僧斗法
  • 原文地址:https://www.cnblogs.com/LilyLiya/p/15028663.html
Copyright © 2020-2023  润新知