题解 | #数组中重复的数字#

数组中重复的数字

http://www.nowcoder.com/practice/6fe361ede7e54db1b84adc81d09d8524

剑指offer第一天

1.判断相关的数据是否有重复,并输出相应的不满足条件数字

我的解决方案

class Solution:
    def duplicate(self , numbers: List[int]) -> int:
        if any(numbers)>len(numbers) or len(numbers)==0:
            return -1
        else:
            for index,i in enumerate(numbers):
                if i in numbers[index+1:]:
                    return i
        # write code here
        # 其他情况
        return -1
     

他人高效解决方案:使用hash表进行存储 运行时间减少了,运行空间比我们的多

class Solution:
    def duplicate(self , numbers: List[int]) -> int:
        #哈希表记录重复
        mp = dict()  # 这可以直接定义一个字典进行表示
        #遍历数组
        for num in numbers:
            #如果没有出现过就加入哈希表
            if num not in mp:
                mp[num] = 1  # 将字典的值key进行赋值操作,字典遍历得到的是key
            #否则就是重复数字
            else:
                return num
        #没有重复
        return -1

以后碰到这种题目,先想到最少时间操作的,hash表,字典进行操作,避免重复查询,hash表查询in非常快,list查询太慢了。

全部评论

相关推荐

点赞 评论 收藏
分享
AAA专业长城贴瓷砖刘大爷:这样的简历我会直接丢进垃圾桶,花里胡哨的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务