zoukankan      html  css  js  c++  java
  • 每日一题力扣697

    给定一个非空且只包含非负数的整数数组 nums,数组的度的定义是指数组里任一元素出现频数的最大值。

    你的任务是在 nums 中找到与 nums 拥有相同大小的度的最短连续子数组,返回其长度。

    来源:力扣(LeetCode)

    链接:https://leetcode-cn.com/problems/degree-of-an-array

    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    正解

    class Solution:
        def findShortestSubArray(self, nums: List[int]) -> int:
            #要找到数组的度
            #还要找到那个重复最大的数,可能不止一个
            #找到这个数出现的最左端和最右端
            #最左端减去最右端,取最小值
            left, right = dict(), dict()
            counter=collections.Counter(nums)
            for i,num in enumerate(nums):
                if num not in left:
                    left[num]=i
                right[num]=i#此后再遇到这个数就只记录和更新它的右端了
                #还要记录频数
            degree = max(counter.values())
            res=len(nums)
            for k,v in counter.items():
                if v==degree:
                    res=min(res,right[k]-left[k]+1)
            return res
    class Solution:
        def findShortestSubArray(self, nums: List[int]) -> int:
            #要找到数组的度
            #还要找到那个重复最大的数,可能不止一个
            #找到这个数出现的最左端和最右端
            #最左端减去最右端,取最小值
            left, right = dict(), dict()
            counter=collections.Counter(nums)
            for i,num in enumerate(nums):
                if num not in left:
                    left[num]=i
                right[num]=i#此后再遇到这个数就只记录和更新它的右端了
                #还要记录频数
            degree = max(counter.values())
            res=len(nums)
            for k,v in counter.items():
                if v==degree:
                    res=min(res,right[k]-left[k]+1)
            return res
  • 相关阅读:
    ps 玻璃效果
    svn 官方下载
    svn
    c# form 无标题
    app Inventor google 拖放手机代码块
    paas
    java 延迟
    c# 执行 cmd
    c # xml操作 (无法将类型为“System.Xml.XmlComment”的对象强制转换为类型“System.Xml.XmlElement”)
    eclipse 安装插件 link方式
  • 原文地址:https://www.cnblogs.com/liuxiangyan/p/14443699.html
Copyright © 2011-2022 走看看