有效地计算“ n”以下的奇数

时间:2019-06-13 13:47:14

标签: python python-3.x

给出数字n,返回n以下的正奇数,

oddCount(7) //=> 3, i.e [1, 3, 5]
oddCount(15) //=> 7, i.e [1, 3, 5, 7, 9, 11, 13]

我的代码需要更多的时间来执行大量计数。 谁能提出一种提高时间效率的方法?

def odd_count(n):
    count_odd= [num for num in range(0,n) if num%2!=0]
    count_odd= len(count_odd)
    print(count_odd)

执行超时

STDERR

  

执行超时(12000毫秒)

     

为什么我的代码超时?

     

我们的服务器配置为仅允许一定时间来执行您的代码。在极少数情况下,服务器可能承担过多的工作,并且根本无法足够高效地运行您的代码。尽管大多数情况下,此问题是由效率低下的算法引起的。如果您多次看到此错误,则应尝试进一步优化代码。

2 个答案:

答案 0 :(得分:1)

您只需对数字进行计数即可:

n//2

答案 1 :(得分:0)

您的算法当然可以工作,但是正如cs95在评论中所指出的,您所需要的只是地板分割。

def count_odds_below(n):
    return n//2

这比您的算法更快,并且可以轻松处理大量数字。

示例:

print(count_odds_below(15))

这将打印7。