剑指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
posted @ 2022-04-19 10:34  富士山上  阅读(23)  评论(0编辑  收藏  举报