美文网首页
1109. 航班预订统计

1109. 航班预订统计

作者: 不湿的尿布湿 | 来源:发表于2020-03-01 19:53 被阅读0次

一、题目

这里有 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]

相关文章

网友评论

      本文标题:1109. 航班预订统计

      本文链接:https://www.haomeiwen.com/subject/kslqkhtx.html