首页 > 其他分享 >03数组中重复的数字

03数组中重复的数字

时间:2024-04-09 11:26:10浏览次数:17  
标签:03 set 数字 容器 重复 复杂度 数组

描述

在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组[2,3,1,0,2,5,3],那么对应的输出是2或者3。存在不合法的输入的话输出-1

数据范围:
0≤n≤10000
进阶:时间复杂度O(n) ,空间复杂度O(n)
示例1:
输入:[2,3,1,0,2,5,3]
返回值:2
说明:2或3都是对的

方法1:
采容器,对容器中的元素进行排序,然后判断是否有重复的数字。
时间复杂度O(nlogn)

    int duplicate(vector<int>& numbers) {
        // write code here
        sort(numbers.begin(), numbers.end());
        for(int i =0; i<numbers.size(); i++)
        {
            if(numbers[i] == numbers[i+1])
                return numbers[i];
        }
        return -1;
    }

方法2:
采用set容器,创建一个set容器,在数组中找set末尾元素,如果没找到,就将数组的元素i插入到set容器中,如果找到了,就返回i。
否则就是返回-1。
set是关联式容器,用来存储同一数据类型,且set中的每个元素的值都是唯一的,系统会根据元素的值自动进行排序。
时间复杂度O(n) , 空间复杂度O(n)

    int duplicate(vector<int>& numbers) {
        // write code here
        set<int> s;
        for(int i =0; i<numbers.size(); i++)
        {
            if( s.find(numbers[i]) ==s.end())
                s.insert(numbers[i]);
            else
                return numbers[i];
        }
        return -1;
    }

标签:03,set,数字,容器,重复,复杂度,数组
From: https://www.cnblogs.com/H43724334/p/18123363

相关文章

  • CEF编译报错:ValueError: path is on mount '\\\\tab_group_types.mojom-webui.js'
    F:\code\chromium_git\chromium\src>autoninja-Cout\Debug_GN_x64cef"f:\code\depot_tools\bootstrap-2@3_11_6_chromium_30_bin\python3\bin\python3.exe"F:\code\depot_tools\ninja.py-Cout\Debug_GN_x64cef-j10ninja:Enteringdirec......
  • Firefox火狐浏览器控制台,提示:已拦截跨源请求:同源策略禁止读取位于 http://127.0.0.1
    前言全局说明Firefox火狐浏览器控制台,提示:已拦截跨源请求一、火狐官方说明https://developer.mozilla.org/zh-CN/docs/Web/HTTP/CORS/Errors/CORSMissingAllowOrigin?utm_source=devtools&utm_medium=firefox-cors-errors&utm_campaign=default二、修改浏览器方法[原文......
  • 为什么C++中不能将数组的内容拷贝给其他数组作为初始值,也不能用数组给其他数组赋值
    0前言来自primer的3.5部分以下写法是有问题的inta[]={0,1,2}inta2[]=a;//错误,不允许使用一个数组初始化另一个数组a2=a;//错误:不能把一个数组赋值给另一个数组有些编译器支持上面的操作,但是书上说这属于非标准功能,是编译器扩展1原因C++中的数组......
  • JS数组方法
    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录@[TOC](文章目录)一、改变数组内容的方法1、push():向数组的末尾添加一个或多个元素,并返回新的长度。2、pop():删除并返回数组的最后一个元素。3、shift():删除并返回数组的第一个元素。4、un......
  • 039rsync和inotify实时文件同步
    安装注意把ip换一下#主备机器都安装rsync和inotify-toolssudoapt-get-yinstallrsyncinotify-tools#使用nginx配置文件测试:/tmp#cd/tmp&&cp-rf/usr/local/nginx/conf/nginx_conf#初始同步rsync-avz--delete/tmp/[email protected]:/tmp......
  • webrtc分支切换到m94 下载报错 FileNotFoundError: [Errno 2] No such file or direct
    FileNotFoundError:[Errno2]Nosuchfileordirectory:'vpython' 此问题翻遍整个网络,没有解决方案,希望能帮忙到需要的人 描述:      正常下载代码后,基于master(默认)编译通过,现需要切到m94分支(参考 Linux/Ubuntu编译WebRTC&libmediasoupclient_linuxg++......
  • C语言 03 VSCode开发
    安装好C语言的开发环境后,就需要创建项目进行开发了。使用IDE(集成开发环境)进行开发了。C语言的开发工具很多,现在主流的有Clion、VisualStudio、VSCode。这里以VSCode作为演示。创建项目安装VSCode。推荐直接在微软的应用市场安装:安装插件。安装好VSCode......
  • 20240408,C++数组,函数,指针
    是谁说回老家学习结果摆烂了两天,是我,Π—Π! Π—Π!! 一,数组——同C1.1一维数组1.0  相同类型,连续内存,1.1  定义格式:数据类型数组名【长度】;数组类型数组名【长度】={1,2,3,……};数组类型数组名【】={1,2,3,……};1.2  遍历数组,初始化,下标【0-N】1.3  数组名:数......
  • 13、普通数组-最大子数组和
     思路卡登算法(Kadane'sAlgorithm)是一种用于解决“最大子数组和”问题的高效算法。这个问题的目标是在一个整数数组中找到具有最大和的连续子数组。卡登算法的美妙之处在于它的简洁性和高效性——它可以在单次遍历中解决问题,时间复杂度为O(n),其中n是数组的长度。基本概......
  • react 函数组件和hook
    函数组件1.函数组件没有生命周期2.函数组件没有this3.函数组件通过hook完成各种操作4.函数组件本身就是render函数5.props在函数第一个参数解释useState参考https://www.cnblogs.com/ssszjh/p/14581014.htmlprops参考https://www.cnblogs.com/ssszjh/p/18118746生命周期......