当前位置: 首页 > news >正文

数组的度(指数组里任一元素出现频数的最大值)

题目:

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

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

示例 1:

输入:nums = [1,2,2,3,1]
输出:2
解释:
输入数组的度是 2 ,因为元素 1 和 2 的出现频数最大,均为 2 。
连续子数组里面拥有相同度的有如下所示:
[1, 2, 2, 3, 1], [1, 2, 2, 3], [2, 2, 3, 1], [1, 2, 2], [2, 2, 3], [2, 2]
最短连续子数组 [2, 2] 的长度为 2 ,所以返回 2 。

示例 2:

输入:nums = [1,2,2,3,1,4,2]
输出:6
解释:
数组的度是 3 ,因为元素 2 重复出现 3 次。
所以 [2,2,3,1,4,2] 是最短子数组,因此返回 6 。

代码:

class Solution(object):def findShortestSubArray(self, nums):""":type nums: List[int]:rtype: int"""if len(nums)==1 or len(set(nums))==len(nums):return 1d={}for i in nums:d[i]=d.get(i,0)+1a=max(d.values())num=[ch for ch,v in d.items() if v==a]#找出重复最多的元素ans=[]for i in num:left,right=0,len(nums)-1while left<right:#双指针找到头尾元素if nums[left]!=i:left+=1elif nums[right]!=i:right-=1elif nums[left]==i and nums[right]==i:#找到跳出循环进行遍历下一个元素ans.append(right-left+1)breakreturn min(ans)#返回最短子数组长度

http://www.lryc.cn/news/139171.html

相关文章:

  • scala array类型参数
  • 构建 NodeJS 影院预订微服务并使用 docker 部署(03/4)
  • html写一个向flask_socketio发送消息和接收消息并显示在页面上
  • C#使用.Net Core进行跨平台开发
  • Java“牵手”天猫店铺所有商品API接口数据,通过店铺ID获取整店商品详情数据,天猫API申请指南
  • php输入post过滤函数,入库出库,显示
  • matlab-对数据集加噪声并实现tsne可视化
  • 【BASH】回顾与知识点梳理(三十八)
  • Sql注入攻击的三种方式
  • dockerfile部署前端vue打包的dist文件实战
  • [技术杂谈]MobaXterm中文乱码编码问题一种解决方法
  • mac os M1 安装并启动 postgreSQL 的问题
  • 如何使用Wireshark进行网络流量分析?
  • 抖音web主页视频爬虫
  • 常用的jar包【maven坐标格式】
  • 【分布式】VMware FT概要
  • 江西南昌电气机械三维测量仪机械零件3d扫描-CASAIM中科广电
  • MySQL三大日志(binlog、redo log和undo log)详解
  • 七大排序算法详解
  • [docker][WARNING]: Empty continuation line found in:
  • 探工业互联网的下一站!腾讯云助力智造升级
  • SpringBoot上传文件的实现与优化
  • 学习python可以做什么?有前景么
  • 还不知道怎么提示LLM?ChatGPT提示入门
  • 反射机制-体会反射的动态性案例(尚硅谷Java学习笔记)
  • uniapp离线打包apk - Android Studio
  • cuda面试准备(一),架构调试
  • docker containers logs清理
  • Ubuntu安装RabbitMQ
  • Vue3获取当前环境信息