leetcode1109

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

原文地址:https://www.cnblogs.com/asenyang/p/11145985.html