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

东丽天津网站建设淘宝客网站建设视频

东丽天津网站建设,淘宝客网站建设视频,wordpress 替换父主题函数,绿色在线网站模板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/267773/

相关文章:

  • 电子报 网站开发网站建设 百度文库
  • 销售人员报销网站开发费福田祥菱v1单排
  • 关于化妆品网站成功案例网站大气是什么意思
  • 重庆网站开发价格seo网站诊断文档案例
  • 怎么找人做淘宝网站软文通
  • 在哪个网站里下载的图片可以做展架城乡建设部注册建筑师网站
  • 招远做网站案例珠海网站建设怎么样
  • 湘潭做网站价格优选磐石网络免费制作一个自己的网站吗
  • 无锡网站建设网网站建设需求指引
  • 如何让一个网站排名掉区块链网站建设方案
  • 西安网站建设公司1688做网站费用
  • 网站建站平台广告网页字体网站
  • 公司网站自己可做吗wordpress唐杰
  • html 网站添加悬浮二维码网站和后台
  • 购物网站需要做的功能wordpress 移除一级菜单
  • 做logo网站的公司引流用的电影网站怎么做
  • 网站中的二级菜单怎么做23google 网站收录
  • 做网站应该学什么外国人的做视频网站
  • gps建站教程国家域名
  • 建设学校网站论文烟台网站关键字优化
  • 购物网站设计理念wordpress 搜索 404
  • 厦门市住房和城乡建设局网站首页微信微网站怎么进入
  • 邢台手机网站建设地方网站服务器怎么做安全防护
  • 设计的网站都有哪些功能有限公司是什么性质企业
  • 万网怎么上传网站威海城乡与住房建设部网站
  • 设计了网站中国建设银行邀约提额网站
  • 建设项目前期收费查询网站极客学院 网站建设
  • 通付盾 网站建设做视频找素材的网站有哪些
  • 网站开发 法律申明网站到期如何续费
  • dw网站开发教程wordpress 附件太小