3169. 无需开会的工作日

题目来源:

        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
        
 

总结:

        这题应该自写排序算法的,但冒泡超时后就没写了。

        官方题解居然也是调用接口,没写排序算法。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值