JZX轻语:简
LeetCode 1109 - 航班预订统计
发表于2024年06月14日
今天做的第二道差分数组题,上一道是1094-拼车,本质做法和上一道是一样的,只不过这道题左右都是闭区间。最后通过累加就地恢复为原数组即可。
class Solution:
def corpFlightBookings(self, bookings: List[List[int]], n: int) -> List[int]:
diff = [0] * n
for first, last, seats in bookings:
# 注意题目中的first, last是从1开始计数的
# 而我们的结果数组从0开始计数
# 因此需要-1
diff[first - 1] += seats
# 此时这里的从1计数的last其实可以看成(从0计数的)开区间了
if last < n:
diff[last] -= seats
# 就地累加恢复数组
ans = diff
for i in range(len(ans)):
ans[i] += ans[i - 1] if i > 0 else 0
return ans