type
status
date
slug
summary
tags
category
icon
password
一、基础运算符与表达式
1. 数学运算符
2. 比较运算符
3. 逻辑运算符
4. 赋值运算符
5. 身份运算符
6. 成员运算符
7. 三目运算符
二、推导式练习
1. 列表推导式
2. 元组推导式
3. 字典推导式
4. 集合推导式
三、常用语句基本语法练习
1. for 循环
2. if-elif-else
3. while 循环
4. match-case
四、一些练习题
- 逆向最大匹配分词
先来看主播第一次的死循环代码,看起来挺对的,Gpt4.1那蠢货也没看出来,最后死命看问题,发现了str里面字打错了

修改,同时加入了偷懒少写的加入单字的相关代码

五、每日一题
题目:3440. 重新安排会议得到最多空余时间 II
给你一个整数
eventTime
表示一个活动的总时长,这个活动开始于 t = 0
,结束于 t = eventTime
。同时给你两个长度为
n
的整数数组 startTime
和 endTime
。它们表示这次活动中 n
个时间 没有重叠 的会议,其中第 i
个会议的时间为 [startTime[i], endTime[i]]
。你可以重新安排 至多 一个会议,安排的规则是将会议时间平移,且保持原来的 会议时长 ,你的目的是移动会议后 最大化 相邻两个会议之间的 最长 连续空余时间。
请你返回重新安排会议以后,可以得到的 最大 空余时间。
注意,会议 不能 安排到整个活动的时间以外,且会议之间需要保持互不重叠。
注意:重新安排会议以后,会议之间的顺序可以发生改变。
示例 1:
输入:eventTime = 5, startTime = [1,3], endTime = [2,5]
输出:2
解释:

将
[1, 2]
的会议安排到 [2, 3]
,得到空余时间 [0, 2]
。示例 2:
输入:eventTime = 10, startTime = [0,7,9], endTime = [1,8,10]
输出:7
解释:

将
[0, 1]
的会议安排到 [8, 9]
,得到空余时间 [0, 7]
。示例 3:
输入:eventTime = 10, startTime = [0,3,7,9], endTime = [1,4,8,10]
输出:6
解释:

将
[3, 4]
的会议安排到 [8, 9]
,得到空余时间 [1, 7]
。示例 4:
输入:eventTime = 5, startTime = [0,1,2,3,4], endTime = [1,2,3,4,5]
输出:0
解释:活动中的所有时间都被会议安排满了。
解题:
1.看到题目以后首先想到我先要计算出所有的空闲时间的长短,题目已经明确
0 <= startTime[i] < endTime[i] <= eventTime
,据此可以判断时间间隔为:start[i+1]-end[i],还要注意刚开始的空闲时间是start[0](还有结束空闲时间,还是靠ai提醒才想起来这里只包括到了最后一个会议)2.再尝试计算出每个会议的时长
3.然后我目前考虑的是找到最大和第二大的空闲时间,这样可以快速比较会议时间能否放入空闲时间,当取到的值比最大值大时,第二大等于第一大,第一大等于取到的值,当取到的值大于第二大时,更新第二大。
4.确定不移动会议时的空闲最大值
5.接下来开始找会议了,先看看每个会议前后的空闲时间,再看看这个空闲时间也没有占用第一,第二大的空闲,没有的话直接比对会议时间和剩下的最大空闲
不对,好像没有考虑到如果左右两边分别是第一大和第二大呢,那我考虑加个第三大?那我更改一下3,4,5,太难改了,叫Ai改一下
6.接下来考虑能不能搬进去了
管他的,完整代码如下,是骡子是马拿去跑一下
提交正确,但是我感觉else这里的判断不应该是这样,如果h[i]> other,那不就是说不能移动吗,为什么还要把两边空闲时间相加的值merged赋值给cand去比较呢。
问了ai明白了,就是把这个会议推到下一个会议开始前,确实是这样的,推到后面以后t[i]+t[i+1]就是目前最大的空闲时间。
- 作者:sisui
- 链接:https://www.sisui.me//article/py-comp-seq-map-set
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
相关文章