python - Python 中的编码风格

标签 python arrays python-2.7 coding-style hashmap

我最近接受了硅谷一家著名公司的面试。我被要求用 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),因此它可以满足该要求。

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

关于python - Python 中的编码风格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21719874/

相关文章:

python - 具有另一种数据类型的 OpenCV warpPerspective

python - 捕获行直到第一次响应 python 中的事件

python - Pycharm 与使用相等运算符执行的 None 比较

python - 删除 numpy 数组中的孤立单元格

javascript - 在Javascript中使用reduce对空数组和非空数组求和

python - 如何在单台机器上使用多处理运行 Locust

javascript - 在 AngularJS 中将数据推送到数组

python - 如何在 Python 中绘制多个时间序列

python - 在 Django 中对同一 View 的请求之间共享数据

css - 数据抓取: How to select width from a style tag by using Scrapy CSS?