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,画图表示如下,是不是很有艺术感呢。

posted on 2019-07-07 12:43  Sempron2800+  阅读(294)  评论(0编辑  收藏  举报