欢迎光临散文网 会员登陆 & 注册

Leetcode 刷题Day1(3/2)

2022-03-29 16:44 作者:我喜欢喝一点点  | 我要投稿

找出数组中重复的数字。

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

①set里面找

class Solution(object):

    def findRepeatNumber(self, nums):

        tmp=set()

        for num in nums:

            if num in tmp:

                return num

            tmp.add(num)

        return -1

    

    

    #和今天的题1差不多

    #碎碎念一下……几个语言的判断函数真的好容易混啊,java用的是contais,py用的是in

    #而且,为什么C++题解中不用set而是map呢,C++不是有set嘛……



②索引,先一一对应【第0个数字必须为0这样,然后找到重复的】

class Solution(object):

    def findRepeatNumber(self, nums: List[int]) ->int:

        i=0

        while i<len(nums):

            if nums[i]==i:

                i=i+1

                continue

            if nums[nums[i]]==nums[i]: return nums[i]

            nums[nums[i]], nums[i] = nums[i], nums[nums[i]]

        return -1



Leetcode 刷题Day1(3/2)的评论 (共 条)

分享到微博请遵守国家法律