首页 > 其他分享 >哈希表:剑指 Offer 03. 数组中重复的数字

哈希表:剑指 Offer 03. 数组中重复的数字

时间:2023-04-12 10:12:41浏览次数:36  
标签:03 数字 Offer 重复 nums 哈希 dic num 数组

题目描述:

找出数组中重复的数字。


在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。

数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。

 

 

 

限制:

  2 <= n <= 100000

 

哈希表 / Set
利用数据结构特点,容易想到使用哈希表(Set)记录数组的各个数字,当查找到重复数字则直接返回。

算法流程:
1.初始化: 新建 HashSet ,记为 dic ;
2.遍历数组 nums 中的每个数字 num :
  1).当 num 在 dic 中,说明重复,直接返回 num ;
  2).将 num 添加至 dic 中;
3.返回 −1 。本题中一定有重复数字,因此这里返回多少都可以。


复杂度分析:
  时间复杂度 O(N) : 遍历数组使用 O(N) ,HashSet 添加与查找元素皆为 O(1) 。
  空间复杂度 O(N) : HashSet 占用 O(N) 大小的额外空间。

class Solution {
    public int findRepeatNumber(int[] nums) {
        Set<Integer> dic = new HashSet<>();
        for(int num : nums) {
            if(dic.contains(num)) return num;
            dic.add(num);
        }
        return -1;
    }
}

 

 

 

 

 

标签:03,数字,Offer,重复,nums,哈希,dic,num,数组
From: https://www.cnblogs.com/zhz123567/p/17308829.html

相关文章

  • Lab03-04
    目录样本信息字符串信息导入表信息样本分析样本运行时检查运行条件:查杀思路总结技巧样本信息字符串信息导入表信息样本分析样本运行时检查运行条件:命令行参数个数是否大于1如果参数等于1,检查注册表:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\XPS\Configuration如......
  • 如何处理HTTP 503故障问题?
    简述HTTP503故障问题在业务管理上很常见, 以问题的可能性也相当多, 故障时除了503提示, 好像什么也没有, 发生故障时应如何处理呢? 文章内会为大家详细说明什么是HTTP503就是网站打不开时, 展示503错误等内容,503的内容又从那里来的呢? 真实情况是客户已成功连上网站服务器......
  • ECON1203 经济与统计
    UNSWBusinessSchoolECON1203BusinessEconomicsandStatisticsProjectOverviewTheprojectaimstoenhanceyourcareer-focusedlearningexperiencebybringingreal-worldscenariosandarealbusinessproblemintotheclassroom,creatingasafespaceforyo......
  • php的TP框架保存数据报错: SQLSTATE[HY000]: General error: 1366 Incorrect string v
    这一般情况就是保存表情字符导致的字符长度问题原因可能: (需要改字符集为 utf8mb4 排序规则为utf8mb4_general_ci)1.数据表字段不是utf8mb42.项目目录下文件.env里配置mysql  CHARSET=utf8需要该为 CHARSET=utf8mb43.如果不存在.env文件,则可能是config目......
  • (之前的项目复习)我的Java项目实战--校园餐饮商户外卖系统03
    开发笔记三分类管理业务开发公共字段自动填充问题分析前面我们已经完成了后台系统的员工管理功能开发,在新增员工时需要设置创建时间、创建人、修改时间、修改人等字段,在编辑员工时需要设置修改时间和修改人等字段。这些字段属于公共字段,也就是很多表中都有这些字段,如下:能......
  • 堆:剑指 Offer 41. 数据流中的中位数
    题目描述:如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。例如,[2,3,4] 的中位数是3[2,3]的中位数是(2+3)/2=2.5设计一......
  • Go语言入门5(map哈希表)
    Map​ 哈希表是一种巧妙并且实用的数据结构。它是一个无序的key/value对的集合,其中所有的key都是不同的,然后通过给定的key可以在常数时间复杂度内检索、更新或删除对应的value。​ 在Go语言中,一个map就是一个哈希表的引用,map类型可以写为map[K]V,其中K和V分别对应key和value。m......
  • Python程序笔记20230303
    成绩评级程序分数<60,D60<=分数<80,C80<=分数<90,B90<=分数<100,A分数==100,S#输入分数score=int(input("请输入分数:"))#判断评级ifscore<0orscore>100:print("无效的分数")elifscore<60:print("......
  • 【剑指 Offer】 15. 二进制中1的个数
    【题目】编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中数字位数为'1'的个数(也被称为汉明重量).)。 提示:   请注意,在某些语言(如Java)中,没有无符号整数类型。在这种情况下,输入和输出都将被指定为有符号整数类型,并且不应影响您的实现,因为无论整数是......
  • Python程序笔记20230302
    Alice、Bob和他们的朋友们问题主体密码学家Rivest、Shamir、Adleman于1977年4月撰写了一篇论文《数字签名与公钥密码学》(OnDigitalSignaturesandPublic-KeyCryptosystems),并投稿至了一个期刊上,不过很遗憾这篇论文被拒稿了。随后他们修改了论文,并将论文重新命名为《一种实......