python 找出数组中重复的数字

找出数组中重复的数字。

在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。
示例 1:

输入:
[2, 3, 1, 0, 2, 5, 3]
输出:2 或 3 

我是个刚刚刷算法的菜鸡,刚刚看到这题,我开始只能想到用python的字典对象进行解题,原理是对照字典如果这个int类型不在这个字典里,就将这个对象存储在这个字典,如果已经存在的话,这个显而易见就是我们要找的重复数字,代码在下面.

class Solution:
    def findRepeatNumber(self, nums: List[int]) -> int:
        repeatDict = {}
        for num in nums:
            if num not in repeatDict:
                repeatDict[num] = 1
            else:
                return num

后来想想可以先排序,然后看相邻的两个位置是否一样

class Solution:
    def findRepeatNumber(self, nums: List[int]) -> int:
        nums.sort()
        pre = nums[0]
        n = len(nums)
        for index in range(1, n):
            if pre == nums[index]:
                return pre
            pre = nums[index]

也可以更加简单点

class Solution:
    def findRepeatNumber(self, nums: List[int]) -> int:
        nums.sort()
        for i in range(len(nums)-1):
            if nums[i] == nums[i+1]:
                return nums[i]

对照别人写的java代码发现python在运行速度上确实要比java要慢很多,但是java也更加占内存的.暂时只能想到这些解题.

©️2020 CSDN 皮肤主题: 1024 设计师:上身试试 返回首页