给出数字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毫秒)
为什么我的代码超时?
我们的服务器配置为仅允许一定时间来执行您的代码。在极少数情况下,服务器可能承担过多的工作,并且根本无法足够高效地运行您的代码。尽管大多数情况下,此问题是由效率低下的算法引起的。如果您多次看到此错误,则应尝试进一步优化代码。
答案 0 :(得分:1)
您只需对数字进行计数即可:
n//2
答案 1 :(得分:0)
您的算法当然可以工作,但是正如cs95在评论中所指出的,您所需要的只是地板分割。
def count_odds_below(n):
return n//2
这比您的算法更快,并且可以轻松处理大量数字。
示例:
print(count_odds_below(15))
这将打印7。