# 以數組 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