假设我们有n个航班,它们被标记为1到n。我们有一个航班预订列表。第i个预订表示使用预订[i] = [i,j,k],这意味着我们从标有i到j的航班预订了k个座位。找到一个长度为n的数组答案,按标签顺序显示每个航班的预订座位数。因此,如果输入类似于[[1,2,10],[2,3,20],[2,5,25]]且n = 5,则输出将为[10、55、45、25, 25]。
为了解决这个问题,我们将遵循以下步骤-
res:=制作一个大小为n的数组,并用0填充
对于预订中的每个条目
res [i [0]-1]:= res [i [0]-1] + i [2]
如果i [1] <n,则res [i [1]]:= res [i [1]] – i [2]
当我在1到n – 1的范围内时
res [i]:= res [i] + res [i-1]
返回资源
让我们看下面的实现以更好地理解-
class Solution(object): def corpFlightBookings(self, bookings, n): res = [0 for i in range(n)] for i in bookings: res[i[0]-1]+=i[2] if(i[1]<n): res[i[1]]-=i[2] for i in range(1,n): res[i]+=res[i-1] return res ob = Solution()print(ob.corpFlightBookings([[1,2,10],[2,3,20],[2,5,25]],5))
[[1,2,10],[2,3,20],[2,5,25]] 5
输出结果
[10, 55, 45, 25, 25]