【力扣日记】697 数组的度

题目描述

看评论感觉又是一道阅读理解?对着例子看也挺简单的啊。

给定一个非空且只包含非负数的整数数组 nums, 数组的度的定义是指数组里任一元素出现频数的最大值。
你的任务是找到与 nums 拥有相同大小的度的最短连续子数组,返回其长度。

度:数组中的众数数量。
求与 nums 拥有相同大小的度的最短连续子数组,返回其长度。

算法思路

class Solution:
    def findShortestSubArray(self, nums) -> int:
        d={}
        for i in nums:
            d[i]=d.get(i,0)+1
        ls=sorted(d.items(),key=lambda x:x[1],reverse=True)
        MAX=ls[0][1]
        nums='#'+'#'.join(map(str,nums))+'#'

        MIN=float('inf')
        for i in ls:
            if i[1]!=MAX:break
            l,r=nums.find('#'+str(i[0])+'#'),nums.rfind('#'+str(i[0])+'#')
            MIN=min(MIN,nums[l:r].count('#')+1)
        return MIN

执行用时 :432 ms, 在所有 Python3 提交中击败了31.85%的用户

你可能感兴趣的:(力扣日记)