一、题目
这里有 n 个航班,它们分别从 1 到 n 进行编号。
我们这儿有一份航班预订表,表中第 i 条预订记录 bookings[i] = [i, j, k] 意味着我们在从 i 到 j 的每个航班上预订了 k 个座位。
请你返回一个长度为 n 的数组 answer,按航班编号顺序返回每个航班上预订的座位数。
难度:中等
链接:航班预订统计
二、示例
输入:bookings = [[1,2,10],[2,3,20],[2,5,25]], n = 5
输出:[10,55,45,25,25]
三、解答
(一)错误:超出时间限制
class Solution:
def corpFlightBookings(self, bookings: List[List[int]], n: int) -> List[int]:
anwser = [0] * n
for i in range(len(bookings)):
j=int(bookings[i][1]-bookings[i][0])+1
for k in range(j):
loc=int(bookings[i][0])+k-1
anwser[loc]=anwser[loc]+bookings[i][2]
return anwser
(二)正解:差分序列
class Solution:
def corpFlightBookings(self, bookings: List[List[int]], n: int) -> List[int]:
anwser = [0] * (n + 1)
for i, j, k in bookings:
anwser[i-1] += k
anwser[j] -= k
for i in range(1, len(anwser)):
anwser[i] += anwser[i-1]
return anwser[:-1]
网友评论