python - 基本时间复杂度问题。这个简单函数的时间复杂度
问题描述
我对时间复杂度非常陌生。我正在寻找这段代码的时间复杂度
def func(arg):
list= []
for i in range(len(arg):
list.append(arg.count(i)
return list
我知道循环会使其成为 O(n),但是在 python 中 count 也是 O(n),这会使这个函数成为 O(n) 还是 O(n 2 )?
解决方案
您在循环中有一个循环:
for i in range(len(arg)): # outer loop => O(n)
arg.count(i) # inner loop hidden inside a function => O(n)
就是这样O(n^2)
。
如果你想要两个总和为 的循环O(n)
,你需要这样的东西:
for x in range(N): # O(N)
... # do stuff
for y in range(N): # O(N)
... # do other stuff
整体复杂度将是循环复杂度的总和,所以
O(N) + O(N) = O(2 * N) ~= O(N)
推荐阅读
- python - 无法添加标头/Access-Control-Allow-Crendentials - python 函数应用程序
- python-3.x - 不同时间的不同 R 平方分数
- xml - 使用 F# 从 XDocument 中提取所有命名空间属性
- reactjs - 为什么样式化组件会生成对象?
- java - 如何在 rest API 响应中返回多个 InputStream 对象?
- wordpress - 如何使用 URL 参数更改产品的默认变体?
- react-native - 需要澄清 LayoutAnimation
- html - 待办事项应用程序中的“TypeError:无法读取 null 的属性‘值’”
- r - R Shiny Module 不会更新不同选项卡上的输入值
- reactjs - React-Router-DOM 中的嵌套“重定向”