Skip to main content
 首页 » 编程设计

python之Python 中的编码风格

2025年05月04日12tuyile006

我最近接受了硅谷一家著名公司的面试。我被要求用 O(n) 时间复杂度为以下问题编写代码。

问题:

编写一个函数,给定一个整数数组。如果 任何值在数组中至少出现两次,如果 每个元素都是不同的。

问题的症结在于使用 HashMap 。我在 python 中编写了以下代码:

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

整体面试进行得很顺利,我能够找出所有问题的最佳解决方案(高效解决方案)。 后来我收到一封来自公司的邮件,说我不是这个职位的最佳人选。当被问及拒绝的原因时,我被告知要改进我的编码风格。

HR 说我需要改进我的编码风格是什么意思?编写解决上述问题的最佳方法是什么?

编辑:

再次阅读代码后,我相信甚至没有必要执行 hashi[i]+=1 。只需 return 1 就足够了,但我不认为他们仅仅因为我编码中的这个小错误而拒绝了我。

请您参考如下方法:

该问题更简洁的解决方案是:

def has_dups(arr): 
    return len(set(arr)) != len(arr) 

在集合创建时,任何重复项都将被删除,因此计数会告诉我们结果。我认为从迭代器创建集合的时间复杂度为 O(n),因此它可以满足该要求。

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