前缀和,在一段空array上,遇到start的航班号的index,+相应的reserve的座位数,这个数字在将会在前缀和操作时一直往后面的航班上加,加到end+1处则停止,所以,在end+1的index位置-seats数。随后求array前缀和就可以了。
class Solution:
def corpFlightBookings(self, bookings: List[List[int]], n: int) -> List[int]:
res = [0]*100010
for start, end, seats in bookings:
res[start] += seats
res[end+1] -= seats
res = res[1:]
prefix = [0]
for i in range(len(res)):
prefix.append(prefix[-1] + res[i])
return prefix[1:n+1]