剑指offer03:数组中的重复数字
剑指offer03:数组中的重复数字
2022/4/18晚22:11开始自己的leetcode刷题之旅,python冲冲冲。
题目:
在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。
输入:
[2, 3, 1, 0, 2, 5, 3]
输出:2 或 3
链接:https://leetcode-cn.com/problems/shu-zu-zhong-zhong-fu-de-shu-zi-lcof
第一次用python写数据结构的题目,之前都用的c++,还不太会,直接去看答案,学习思路。
思路分析:
- 利用数据结构特点,容易想到使用哈希表(Set)记录数组的各个数字,当查找到重复数字则直接返回。
- 如果没有重复元素,则将新元素添加入set,继续循环。
- 因为题目说的是返回任意一个重复数字,所以找到一个直接return了。
代码分析:
- dic = set()
set() 函数创建一个无序不重复元素集,其实就是建立了一个集合,集合中的元素不允许重复。
答案:
class Solution:
def findRepeatNumber(self, nums: [int]) -> int:
dic = set()
for num in nums:
if num in dic: return num
dic.add(num)
return -1