Python中的编码风格

tus*_*r08 1 python arrays coding-style hashmap python-2.7

我最近接受了一家知名硅谷公司的采访.我被要求用O(n)时间复杂度编写以下问题的代码.

题 :

编写一个给定整数数组的函数.如果任何值在数组中出现至少两次,它应该返回true,如果每个元素都是不同的,它应该返回false.

问题的关键是使用哈希映射.我在python中编写了以下代码:

def containsDuplicate(arr):
    hashi={}
    for i in arr:
        try:
            hashi[i]+=1
            return 1
        except KeyError:
            hashi[i]=1
    return 0
Run Code Online (Sandbox Code Playgroud)

整体访谈进展顺利,我能够找出所有问题的最佳解决方案(有效的解决方案).后来我从公司收到一封邮件,说我不是这个职位的最佳匹配.当被问及拒绝的原因时,我被告知要编写我的编码风格.

当人们说我需要改进我的编码风格时,人力资源意味着什么?为上述问题编写解决方案的最佳方法是什么?

编辑:

在再次阅读代码后,我认为甚至没有必要这样做hashi[i]+=1.只是return 1已经足够了,但我不认为他们仅仅因为我的编码中的这个小错误而拒绝了我.

Gav*_*n H 10

更简洁的解决方案是:

def has_dups(arr):
    return len(set(arr)) != len(arr)
Run Code Online (Sandbox Code Playgroud)

在集合创建中,任何重复都将被删除,因此计数将告诉我们结果.我认为迭代器的集合创建是O(n)所以它将满足该要求.

不能保证这是他们正在寻找的东西!