剑指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查询太慢了。