【问题标题】:why performance is zero for the following logic?为什么以下逻辑的性能为零?
【发布时间】:2017-09-09 17:15:13
【问题描述】:

我写这个函数是为了代码方便,性能为 0,正确性为 100%。

A = [-1, -3]
B = [1,2,3]
C = [1,4,5,6,77,2]

下面的函数应该返回最小的整数,但不存在传递给它的 int 列表。

def solution(A):
    temp = 0;
    tempLst = []
    for item in A:
        temp = temp+1
        if temp not in A:
            tempLst.append(temp)

    return min(tempLst) if tempLst else max(A) + 1

为什么会这样?我只想在没有堆、itertools、partial 的情况下做到这一点。

【问题讨论】:

  • 代码应该用简单的英语做什么?
  • 你好@JacobIRR,我的错我已经添加了函数应该做的事情。
  • 呃,我还是不明白你所说的“但没有传递给它的 int 列表”是什么意思。我得到的 A、B、C 的结果是 1、4、3。听起来它正在寻找不在列表中的最小整数?
  • 听起来更像是在寻找不在列表中的最小正整数。

标签: python performance-testing correctness


【解决方案1】:

你有一个有效的嵌套循环。

for item in A:

这一行循环遍历A 的所有元素。

    if temp not in A:

...对于每个元素,您再次循环,将tempA 的每个元素进行比较。

这段代码的运行时间是A 大小的二次方。例如。如果 A 有 1000 个元素,则此代码需要 1000*1000 = 1,000,000 步才能完成。

【讨论】:

  • 我可以遍历 xrange(min(A), max(A)) 并检查 A 中存在的每个递增值,还有其他可能的方法吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-01-28
  • 2018-07-19
  • 1970-01-01
  • 2018-06-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多