1 class Solution: 2 def corpFlightBookings(self, bookings: 'List[List[int]]', n: int) -> 'List[int]': 3 dic = dict() 4 for begin,end,val in bookings: 5 if begin in dic: 6 dic[begin] += val 7 else: 8 dic[begin] = val 9 if (end+1) in dic: 10 dic[end+1] -= val 11 else: 12 dic[end+1] = -val 13 res = [0] * n 14 #print(dic) 15 baseval = 0 16 for i in range(n): 17 if (i+1) in dic: 18 baseval += dic[(i+1)] 19 res[i] = baseval 20 return res
思路:柱状图。
baseval初始为0,遇到一个“起点”,就加一个正数,遇到一个“终点”,就加一个负数。注意这里要计算闭区间,因此这里的“终点”是原始数组的(终点+1)的索引。
例如输入数据:[[1,2,10],[2,3,20],[2,5,25]],n=5,画图表示如下,是不是很有艺术感呢。