lc marathon 10.7

1629. 按键持续时间最长的键

class Solution:
    def slowestKey(self, releaseTimes: List[int], keysPressed: str) -> str:
        dic={}
        maxn=0
        rs='a'
        for index,key in enumerate(keysPressed):
            ts=0
            if index==0:
                ts=releaseTimes[index]
            else:
                ts=releaseTimes[index]-releaseTimes[index-1]
            if key not in dic.keys():
                dic[key]=ts
            else:
                if ts>dic[key]:
                    dic[key]=ts
            if dic[key]>maxn:
                maxn=dic[key]
                rs=key
            elif dic[key]==maxn and key >= rs:
                rs=key
        return rs
        

420. 找到所有好下标

class Solution:
    def goodIndices(self, nums: List[int], k: int) -> List[int]:
        # 用一个数组存下表明i之前k个元素是否是非递增
            # 用一个数组表明i之前最多多少个元素非递增(<=k)
            #[5,5,4,3,21,3]
                # 遇到非递增的 则变成上一个+1(最大k)
                # 遇到递增的 则变成0

        # 用一个数组存下表明i之后k个元素是否是非递减
                # 同上
        nums1 = [0 for i in range(len(nums))]
        for index, num in enumerate(nums):
            if index==0:
                nums1[index]=1
            else:
                if num > nums[index-1]:
                    nums1[index]=1
                else:
                    nums1[index]=min(k,nums1[index-1]+1)
        print(nums1)
        nums2 =[0 for i in range(len(nums))]
        for index in range(len(nums)-1,-1,-1):
            if index==len(nums)-1:
                nums2[index]=1
            else:
                if nums[index] > nums[index+1]:
                    nums2[index]=1
                else:
                    nums2[index]=min(k,nums2[index+1]+1)
        print(nums2)
        ls=[]
        for index,num in enumerate(nums):
            if index==0 or index==len(nums)-1:
                continue
            if nums1[index-1]==k and nums2[index+1]==k:
                ls.append(index)

        return ls
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值