( 数组和矩阵) 697. 数组的度 ——【Leetcode每日一题】

news2024/11/15 8:27:32

❓697. 数组的度

难度:简单

给定一个非空且只包含非负数的整数数组 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 。

提示:

  • nums.length150,000 范围内。
  • nums[i] 是一个在 049,999 范围内的整数。

💡思路:哈希表

使用哈希表,key保存的是整数,value保存一个数组,里面右三个数,分别为该整数出现的次数、第一次出现的位置,和最后一次出现的位置;

并设置变量maxmaxNum,记录哪个整数出现的次数最大,及对应的value置,在遍历数组的时候不断更新;

注意有可能数组中出现频率最大数的整数不止一个,这时我们要取较短的那个。

🍁代码:(Java、C++)

Java

class Solution {
    public int findShortestSubArray(int[] nums) {
        int max = 0;
        int maxNum = 0;
        HashMap<Integer, int[]> map = new HashMap<>();
        for(int i = 0; i < nums.length; i++){
            if(!map.containsKey(nums[i])){
                int[] tem = {1, i, i};
                map.put(nums[i], tem);
            }else{
                map.get(nums[i])[0]++;
                map.get(nums[i])[2] = i;
            }
            if(map.get(nums[i])[0] > max){
                max = map.get(nums[i])[0];
                maxNum = nums[i];
            }else if(map.get(nums[i])[0] == max && map.get(nums[i])[2] - map.get(nums[i])[1] < map.get(maxNum)[2] - map.get(maxNum)[1]){
                maxNum = nums[i];
            }
        }
        return map.get(maxNum)[2] - map.get(maxNum)[1] + 1;
    }
}

C++

class Solution {
public:
    int findShortestSubArray(vector<int>& nums) {
        int max = 0;
        int maxNum = 0;
        unordered_map<int, vector<int>> map;
        for(int i = 0; i < nums.size(); i++){
            if(map.find(nums[i]) == map.end()){
                map[nums[i]] = {1, i, i};
            }else{
                map[nums[i]][0]++;
                map[nums[i]][2] = i;
            }
            if(map[nums[i]][0] > max){
                max = map[nums[i]][0];
                maxNum = nums[i];
            }else if(map[nums[i]][0] == max && map[nums[i]][2] - map[nums[i]][1] < map[maxNum][2] - map[maxNum][1]){
                maxNum = nums[i];
            }
        }
        return map[maxNum][2] - map[maxNum][1] + 1;
    }
};

🚀 运行结果:

在这里插入图片描述

🕔 复杂度分析:

  • 时间复杂度 O ( n ) O(n) O(n),其中 n 为数组的长度。
  • 空间复杂度 O ( n ) O(n) O(n),最坏情况下,哈希表和原数组等大。

题目来源:力扣。

放弃一件事很容易,每天能坚持一件事一定很酷,一起每日一题吧!
关注我 leetCode专栏,每日更新!

注: 如有不足,欢迎指正!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/488502.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java异常处理传递规范总结

java 异常分类 Thorwable类&#xff08;表示可抛出&#xff09;是所有异常和错误的超类&#xff0c;两个直接子类为Error和Exception&#xff0c;分别表示错误和异常。其中异常类Exception又分为运行时异常(RuntimeException)和非运行时异常&#xff0c; 这两种异常有很大的区别…

Linux 概述及常用命令(一)

1、Linux 简介 Linux 是一套免费使用和自由传播的类 Unix 操作系统&#xff08;主要用在服务器上&#xff09;&#xff0c;是一个基于 POSIX 和 Unix 的多用户、多任务、支持多线程和多 CPU 的操作系统。 目前市面上较知名的发行版有&#xff1a;Ubuntu&#xff0c;RedHat&…

大学生创业者最关心的问题——校园外卖到底能不能盈利?

与前十年的寒窗苦读相比&#xff0c;大学自由散漫的生活略显空虚。除了学习&#xff0c;学生们还有很多时间自由安排。有些人选择颓废&#xff0c;有些人选择勤奋。而校园创业是许多有想法的大学生都会做的事情。其中&#xff0c;外卖跑腿配送是特别受欢迎的创业项目之一。 那…

五月到了,再来看看ChatGPT给我们带来了什么吧!

ChatGPT&#xff0c;即聊天生成预训练转换器&#xff08;Chat Generative Pre-trained Transformer&#xff09;&#xff0c;是美国OpenAI公司基于GPT-3.5架构&#xff08;目前已经更新到GPT-4&#xff0c;但仅限于Plus用户&#xff09;研发和强化训练的一款人工智能聊天机器人…

C++学习day--04 图形化开发环境搭建

1、为什么要搭建图形化开发环境 因为很多初学者学习C就是单纯的控制台打印输出&#xff0c;很枯燥&#xff0c;我们今后在做项目或者在学习的过程中&#xff0c;采用图形化方式相结合的方法学习&#xff0c;再学习中体会编程带来的快乐。先说明一下&#xff0c;奇牛课程是边学…

YOLOv6 4.0 使用记录:python推理 OpenCV DNN 推理

目录 1、下载源码 2、下载权重文件 3、配置环境 4、推理 6、ONNX格式导出 权重文件为yolov6list_s.pt 权重为yolov6.pt 7、opencv DNN推理 8、个人总结 1、下载源码 下载最新的4.0版本的 2、下载权重文件 我下的是YOLOv6Lite-S 3、配置环境 cd到项目目录&#xff0c;运…

关于IDEA编译运行时出现 《非法字符: ‘\ufeff‘ 需要class,interface或enum》的解决办法

问题如下 原因&#xff1a;编码问题解决办法&#xff1a;将这些报错的文件拷贝到一个目录中&#xff0c;然后用notpad打开&#xff0c;点击工具类上的 编码&#xff0c;将 以uft8格式编码 转为 以utf8无BOM格式编码&#xff0c;然后保存&#xff0c;再覆盖idea中对应的文件。或…

人脸识别--传统+深度方法

人脸识别算法--非深度方法 在前深度学习时代&#xff0c;非深度的方法探索了不同的人脸识别算法。 先考虑一下非深度学习时代&#xff0c;人脸识别难在哪&#xff1f;或者说目标识别的难点在哪&#xff1f; 图像是一个高度冗余的数据。 * 图像数据中包含大量与语义无关的内容…

Hadoop3.3.1 Windows环境配置

1.解压hadoop-3.3.1.tar.gz 到windows安装路径 D:\h3\hadoop-3.3.1 2.检查Windows jdk是否安装正常 3.下载winutils GitHub - steveloughran/winutils: Windows binaries for Hadoop versions (built from the git commit ID used for the ASF relase) 解压到D:\h3\ 并重命名…

Python每日一练(20230504) 课程表 Course Schedule I/II

目录 1. 课程表 Course Schedule I 2. 课程表 Course Schedule II &#x1f31f; 每日一练刷题专栏 &#x1f31f; Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练 专栏 Java每日一练 专栏 1. 课程表 Course Schedule I 你这个学期必须选修 numCourses 门课程&a…

五一劳动节程序员应该知道的知识——计算机

前言 现在AI崛起&#xff0c;计算机已经成为我们不可或缺的一部分&#xff0c;几乎在所有行业和领域都有广泛应用 。 五一已经快要过去了&#xff0c;程序员们应该都放假了&#xff0c;那我们是不是应该去了解了解我们的伙伴——计算机&#xff0c;了去解计算机是怎样工作的&am…

在CSDN逮到一个字节10年老测试开发,聊过之后收益良多···

老话说的好&#xff0c;这人呐&#xff0c;一单在某个领域鲜有敌手了&#xff0c;就会闲得蛋疼。前几天我在上班摸鱼刷CSDN的时候认识了一位字节测试开发大佬&#xff0c;在字节工作了10年&#xff0c;因为本人天赋比较高&#xff0c;平时工作也兢兢业业&#xff0c;现在企业内…

REST API 最佳实践

文章目录 0.什么是 REST API&#xff1f;1.REST API 设计建议1.用名词表示资源2.用复数名词表示集合3.在端点上使用嵌套显示关系4.用 HTTP 方法操作资源5.用过滤、排序和分页请求数据6.用 JSON 作为发送和接收数据的格式7.将实际数据包装在 data 字段中8.非资源请求用动词9.考虑…

搭建环境问题集合(jupyter lab和pycharm)

1、python console找到该项目映射位置在哪里&#xff1f; import os print(os.getcwd()) 2、Linux终端运行命令&#xff0c;Ctrlc & Ctrlz 在Linux中&#xff0c;Ctrl Z组合键可以将当前正在运行的进程暂停&#xff0c;并将该进程放到后台去执行。 linux命令行下Ctrlc的作…

uniapp实现小程序打开相册或拍照上传图片附赠兼容H5方法

文章目录 前言一、支持相册选择和拍照二、删除图片三、效果图存在问题 前言 小程序上传图片&#xff0c;或者拍照上传图片&#xff0c;并附带兼容H5上传图片方法&#xff0c;压缩图片。 一、支持相册选择和拍照 支持选择相册和拍照&#xff0c;可以使用uniapp提供的api&#…

arxiv2022 | MolT5:Translation between Molecules and Natural Language

Ambitious goal &#xff01;&#xff01; 任务&#xff1a;molecule captioning and text-guided de novo molecule generation. 论文链接&#xff1a;https://arxiv.org/abs/2204.11817 代码链接&#xff1a;GitHub - blender-nlp/MolT5: Associated Repository for "…

MySQL知识学习03(三大日志详解 binlog、redo log、undo log)

前言 MySQL 日志 主要包括错误日志、查询日志、慢查询日志、事务日志、二进制日志几大类。其中&#xff0c;比较重要的还要属二进制日志 binlog&#xff08;归档日志&#xff09;和事务日志 redo log&#xff08;重做日志&#xff09;和 undo log&#xff08;回滚日志&#xf…

【校招VIP】很神奇,把简历上的学校名称和姓名盖住,其它的部分都很常见,那简历通过率一定很低

在五一之前的一场简历指导的直播里面&#xff0c;发现了一份有意思的简历。 大家如果把这份简历的学校和姓名抹掉&#xff0c;会发现好像跟自己写的简历一模一样。 技能、项目等都是很通用的。 也就是说&#xff0c;这份简历你能写&#xff0c;你的同学也可以写&#xff0c;甚…

项目执行落地的6个步骤

项目执行是将项目计划付诸行动的过程&#xff0c;为客户或利益相关者生产可交付的产品或服务&#xff0c;也就是所谓的产品或服务。它发生在规划阶段之后&#xff0c;在此期间&#xff0c;一个团队确定了项目的关键目标&#xff0c;以及时间表和预算。 执行包括协调资源和衡量…

现在的00后测试员这么野?领导:这我真管不了...

马上就要迎来一年一度的毕业季&#xff0c;今年即将有1158万00后毕业生正式踏入职场。虽然00后是最近两年才晋升为新鲜出炉的职场小鲜肉&#xff0c;但在一众前辈的眼中&#xff0c;已经身居重任&#xff0c;期望他们能够成为职场中的一股清流&#xff0c;改变一贯以来的职场风…