当前位置: 首页 > news >正文

做旅游海报的软件或是网站一级消防工程师考试内容

做旅游海报的软件或是网站,一级消防工程师考试内容,百度seo免费推广教程,成都家具公司Leetcode 3440. Reschedule Meetings for Maximum Free Time II 1. 解题思路2. 代码实现 题目链接:3440. Reschedule Meetings for Maximum Free Time II 1. 解题思路 这一题某种意义上来说甚至是上一题Leetcode 3439的简化版本(关于这一题的解答可以…
  • Leetcode 3440. Reschedule Meetings for Maximum Free Time II
    • 1. 解题思路
    • 2. 代码实现
  • 题目链接:3440. Reschedule Meetings for Maximum Free Time II

1. 解题思路

这一题某种意义上来说甚至是上一题Leetcode 3439的简化版本(关于这一题的解答可以参考拙作Leetcode 3439. Reschedule Meetings for Maximum Free Time I),因为只要求 k = 1 k=1 k=1,但是差别在于可以改变会议的开始顺序。

因此,我们虽然不需要考察连续 k k k个会议的持续时间,但是需要考察一下在其他会议的间隔范围内是否存在某个gap大于当前会议的时间,如果存在的话我们就可以直接把该会议挪过去,这样就可以直接获取整段的自由时间了。

综上,这一题和上一题基本实现思路就完全一致,唯一的差别就在于需要多求一个其他会议区间内的最大gap时间,这个我们可以通过一个segment tree来实现,对应的内容网上有很多,我自己也有一篇博客作为备忘(经典算法:Segment Tree),因此这里就不过多展开了,有兴趣的读者可以移步去看看。

2. 代码实现

给出python代码实现如下:

class SegmentTree:def __init__(self, arr):self.length = len(arr)self.tree = self.build(arr)def feature_func(self, *args):return max(args)def build(self, arr):n = len(arr)tree = [0 for _ in range(2*n)]for i in range(n):tree[i+n] = arr[i]for i in range(n-1, 0, -1):tree[i] = self.feature_func(tree[i<<1], tree[(i<<1) | 1])return treedef update(self, idx, val):idx = idx + self.lengthself.tree[idx] = valwhile idx > 1:self.tree[idx>>1] = self.feature_func(self.tree[idx], self.tree[idx ^ 1])idx = idx>>1returndef query(self, lb, rb):if rb < lb:return 0lb += self.length rb += self.lengthnodes = []while lb < rb:if lb & 1 == 1:nodes.append(self.tree[lb])lb += 1if rb & 1 == 0:nodes.append(self.tree[rb])rb -= 1lb = lb >> 1rb = rb >> 1if lb == rb:nodes.append(self.tree[rb])return self.feature_func(*nodes)class Solution:def maxFreeTime(self, eventTime: int, startTime: List[int], endTime: List[int]) -> int:meetings = [(i, j, j-i) for i, j in zip(startTime, endTime)]n = len(meetings)freeTimes = [meetings[0][0]] + [meetings[i+1][0] - meetings[i][1] for i in range(n-1)] + [eventTime - meetings[-1][1]]ans = max(freeTimes)segment_tree = SegmentTree(freeTimes)durations = list(accumulate([x[2] for x in meetings], initial=0))for i in range(n):if i == 0:tot = meetings[i+1][0]elif i+1 == n:tot = eventTime - meetings[i-1][1]else:tot = meetings[i+1][0] - meetings[i-1][1]d = durations[i+1] - durations[i]gap = max(segment_tree.query(0, i-1), segment_tree.query(i+2, n))if d > gap:ans = max(ans, tot-d)else:ans = max(ans, tot)return ans

提交代码评测得到:耗时2361ms,占用内存51.1MB。

http://www.yayakq.cn/news/979027/

相关文章:

  • 建设有访问量的网站支持快钱支付的网站
  • ie 常用网站中国建设网站培训通知
  • 福州网站建设费用wordpress 用户地图
  • 南京公司网站建设费用企业网站开发介绍
  • 做网站选用什么域名比较好网页源代码下载图片
  • 抄袭网站模板做网站的软件micro
  • 青岛城市建设档案馆网站河南免费网站建设公司推荐
  • 化妆品做备案的网站自适应科技公司网站模板
  • 中企动力设计的网站仁怀网站建设不好出手
  • 常州网站建设服务建设一个用教育网站
  • 昆山 网站设计上传图片分享链接
  • 邹平建设局官方网站开发小程序的注意事项
  • 电脑维修网站模板下载如何用google搜索产品关键词
  • 网站开发要求学生成绩管理系统 网站建设
  • 上海做衣服版的网站4000套微信小游戏源码
  • 花生壳做网站如何把wordpress头部去掉
  • 手机网站广告代码网站制作报价是否合法
  • 临潼区做网站的公司成全视频免费高清观看在线动漫电影
  • 会搭建网站找什么工作室商城网站源码
  • 电子商务网站规划与建设步骤南京网站建设q润洽网络
  • 电器企业网站建设wordpress 显示代码
  • 网站建设中怎么写苏州优化收费
  • 个人可以做淘宝客网站吗电商平台建设费用
  • 北京建设银行支行查询官方网站业之峰装饰公司官网
  • 三水容桂网站制作深圳龙岗做网站的
  • 综合性电子商务网站有哪些公司ppt模板
  • 网站运营与建设方案深圳东门动漫城
  • 专业做国际网站的公司建筑工程网布设
  • 网站建设公司商务网站项目书一般通过是什么梗
  • 有经验的企业网站建设泉州住房建设局网站