合並區間 python


# 以數組 intervals 表示若干個區間的集合,其中單個區間為 intervals[i] = [starti, endi] 。請你合並所有重疊的區間,並返
# 回一個不重疊的區間數組,該數組需恰好覆蓋輸入中的所有區間。
#
#
#
# 示例 1:
#
#
# 輸入:intervals = [[1,3],[2,6],[8,10],[15,18]]
# 輸出:[[1,6],[8,10],[15,18]]
# 解釋:區間 [1,3] 和 [2,6] 重疊, 將它們合並為 [1,6].

方法:快慢指針

def intervals(nums):
    if not nums:
        return []
    # 先對其中元素排序
    nums.sort()
    # 定義快慢指針
    l, r = 0, 1
    while r < len(nums):
        x1, y1 = nums[l][0], nums[l][1]
        x2, y2 = nums[r][0], nums[r][1]
        # 如果快指針的首元素大於慢指針的第二元素,什么也不做進行后移
        if x2>y1:
            l += 1
            r += 1
        # 否則數組合並
        else:
            nums[l] = [x1, max(y1, y2)]
            nums.pop(r)
    return nums

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM