• leetcode1109


     1 class Solution:
     2     def corpFlightBookings(self, bookings: 'List[List[int]]', n: int) -> 'List[int]':
     3         dic = dict()
     4         for begin,end,val in bookings:
     5             if begin in dic:
     6                 dic[begin] += val
     7             else:
     8                 dic[begin] = val
     9             if (end+1) in dic:
    10                 dic[end+1] -= val
    11             else:
    12                 dic[end+1] = -val
    13         res = [0] * n
    14         #print(dic)
    15         baseval = 0
    16         for i in range(n):
    17             if (i+1) in dic:
    18                 baseval += dic[(i+1)]
    19             res[i] = baseval
    20         return res

    思路:柱状图。

    baseval初始为0,遇到一个“起点”,就加一个正数,遇到一个“终点”,就加一个负数。注意这里要计算闭区间,因此这里的“终点”是原始数组的(终点+1)的索引。

    例如输入数据:[[1,2,10],[2,3,20],[2,5,25]],n=5,画图表示如下,是不是很有艺术感呢。

  • 相关阅读:
    机器学习踩坑之Win10+Ubuntu双系统安装踩坑经验
    面向对象
    模块(三)
    模块(二)
    模块之日志
    包的基础使用
    模块介绍
    递归
    匿名函数与三元表达式
    生成器与迭代器
  • 原文地址:https://www.cnblogs.com/asenyang/p/11145985.html
Copyright © 2020-2023  润新知