题目来源:
LeetCode题目:3169. 无需开会的工作日 - 力扣(LeetCode)
解题思路:
首先根据所给会议的起始时间对其进行排序,然后合并有交叉时间的会议,接着算出所给会议的持续时间,最后根据总时间得到无需开会的工作日。
解题代码:
#python3
class Solution:
def mergeAndSort(meetings:List[List[int]]) -> List[List[int]]:
#排序
meetings.sort(key=lambda x:x[0])
#冒泡超时
#for i in range(0,len(meetings)-1):
# for j in range(0, len(meetings)-i-1):
# if meetings[j][0]>meetings[j+1][0]:
# meetings[j],meetings[j+1]=meetings[j+1],meetings[j]
#合并
res=[]
now=meetings[0]
for i in range(1,len(meetings)):
if meetings[i][0]>now[1]:
res.append(now)
now=meetings[i]
else:
now[1]=max(now[1],meetings[i][1])
res.append(now)
return res
def countDays(self, days: int, meetings: List[List[int]]) -> int:
meetings=Solution.mergeAndSort(meetings)
meetingDays=0
for meeting in meetings:
meetingDays += (meeting[1]-meeting[0]+1)
return days-meetingDays
总结:
这题应该自写排序算法的,但冒泡超时后就没写了。
官方题解居然也是调用接口,没写排序算法。