首页 > 试题广场 >

数组中重复的数字

[编程题]数组中重复的数字
  • 热度指数:171827 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组[2,3,1,0,2,5,3],那么对应的输出是2或者3。存在不合法的输入的话输出-1

数据范围:
进阶:时间复杂度,空间复杂度
示例1

输入

[2,3,1,0,2,5,3]

输出

2

说明

2或3都是对的    
想请教一下各位大神,这样为什么错呀
class Solution:
    def duplicate(self , numbers: List[int]) -> int:
        # write code here、
        l = len(numbers)
        for i in range(l-1):
            for j in range(i,l):
                if numbers[i]==numbers[j]:
                    return numbers[j]
        return -1

发表于 2023-07-21 21:27:28 回复(0)
class Solution:
    def duplicate(self , numbers: List[int]) -> int:
        for item in numbers:
            if numbers.count(item)>1:
                return item
        return -1

发表于 2023-07-09 00:40:02 回复(0)

class Solution:
    def duplicate(self , numbers: List[int]) -> int:
        # write code here
        if not numbers:
            return -1
        temp = []
        for i, val in enumerate(numbers):
            if val not in temp:
                temp.append(val)
            else:
                return val

发表于 2022-07-08 11:21:32 回复(1)
class Solution:
    def duplicate(self , numbers: List[int]) -> int:
        # write code here
        if not numbers:
            return -1
        for x in set(numbers):
            if numbers.count(x) > 1:
                return x

发表于 2022-07-03 08:47:04 回复(0)
class Solution: def duplicate(self , numbers: list[int]) -> int:
        nums_set = set() for num in numbers: if num in nums_set: print(num) else:
                nums_set.add(num) return -1  
发表于 2022-07-02 15:13:11 回复(0)
# 重复=扫描字符时在余下的部分里也发现了相同的字符
class Solution:
    def duplicate(self , numbers: List[int]) -> int:
        rtn = -1
        for i in range(len(numbers) - 1):
            n = numbers[i]
            if n in numbers[i+1:]:
                rtn = n
                break
        return rtn

发表于 2022-06-27 14:29:02 回复(0)
class Solution:
    def duplicate(self , numbers: List[int]) -> int:
        if not numbers:
            return -1
        stack = list()
        for i in range(len(numbers)-1):
            stack.append(numbers[i])
            if numbers[i+1] in stack:
                return numbers[i+1]
            
        return -1
发表于 2022-06-23 23:49:20 回复(0)
class Solution:
    def duplicate(self , numbers: List[int]) -> int:
        # write code here
        if len(numbers) < 1: return -1
        hashtable = dict()
        for i in numbers:
            if i not in hashtable:
                hashtable[i] = 0
            else:
                return i
依次存入哈希表,如果已经存在直接返回值
发表于 2022-05-28 11:59:46 回复(0)
class Solution:
    def duplicate(self , numbers: List[int]) -> int:
        # write code here
        for i in numbers:
            cou=numbers.count(i)
            if cou >= 2:
                return i
        return -1
                
发表于 2022-04-28 09:20:10 回复(0)
class Solution:
    def duplicate(self , numbers: List[int]) -> int:
        # write code here
        n = len(numbers)
        if n == 0: return -1
        d = {}
        for num in numbers:
            if num >= 0 and num <= n-1:
                # 计数
                if num in d:
                    return num
                else:
                    d[num] = 1
            else:
                return -1

发表于 2022-04-22 14:35:43 回复(0)
#思路 就是遍历取出来,看看剩下的数字里面有没有取出来的数,有就返回,没有就下一个,全没有则是全无重复返回-1.
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#

# @param numbers int整型一维数组 
# @return int整型
#
class Solution:
    def duplicate(self , numbers: List[int]) -> int:
        # write code here
        if not numbers:
            return -1
        t=numbers[:]
        for i in range(len(numbers)):
            del t[i]
            if numbers[i] in t:
                return numbers[i]
            t=numbers[:]
        return -1
发表于 2022-04-08 01:09:48 回复(0)
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
#
# @param numbers int整型一维数组
# @return int整型
#
class Solution:
    def duplicate(self, numbers: List[int]) -> int:
        # write code here
        if numbers == []:
            return -1
        else:
            value_index = {}   # 哈希表
            for i, num in enumerate(numbers):
                if num in value_index:
                    return numbers[i]
                value_index[num] = i

发表于 2022-03-14 09:37:57 回复(0)
class Solution:
    def duplicate(self , numbers: List[int]) -> int:
        # write code here
        if len(numbers) is not None:
            if len(numbers) ==1:
                return -1
            for i in range(len(numbers)):
                if i == len(numbers)-1:
                    return -1
                else:
                    if numbers[i] in numbers[i+1:]:
                        return numbers[i]
        return -1
代码优化空间很大
发表于 2022-03-06 22:41:40 回复(0)
class Solution:
    def duplicate(self , numbers: List[int]) -> int:
            aa=list(set(numbers))
            for i in range(len(aa)):
                while numbers.count(aa[i])>1:
                    return aa[i]
            return -1

发表于 2022-03-06 17:52:31 回复(0)
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 
# @param numbers int整型一维数组 
# @return int整型
#
from collections import Counter
class Solution:
    def duplicate(self , numbers: List[int]) -> int:
        # write code here
        if len(numbers) == 0:
            return -1
        else:
            dict_ = Counter(numbers)  #使用Counter统计每个数字出现的次数
            return dict_.most_common(1)[0][0]  #most_common(N),返回n个最常见的数字

发表于 2022-03-04 00:03:51 回复(0)
class Solution:
    def duplicate(self , numbers: List[int]) -> int:
        # write code here
        if len(numbers) == 0:
            return -1
        for i in numbers:
            if numbers.count(i) > 1:
                return i
发表于 2022-02-28 22:30:08 回复(0)