python - 大 O 表示法中的 Codility 三角问题
问题描述
我已经解决了 Codility 的三角形问题,但是我是 Big O Notation 的业余爱好者,我想问一下这个解决方案的时间复杂度是 O(N * logN)?
问题:https ://app.codility.com/programmers/lessons/6-sorting/triangle/
解决方案;
def solution(A):
# if sorted
# A[Q] + A[R] > A[P]
# A[P] + A[R] > A[Q]
# only needed to check
# A[P] + A[Q] > A[R]
A.sort()
if (len(A) < 3):
return 0
for i in range(len(A)-2):
if (A[i] > A[i+2] - A[i+1]):
return 1
return 0
解决方案
如for
您所料,循环在这里是良性的,并且具有 O(N) 的时间复杂度。
但是,该A.sort()
调用具有 O(nlog(N)) 时间复杂度。有关更多详细信息,请参阅Timsort 的 Wikipedia 条目。
推荐阅读
- xcode - Xcode10 - xcworkspace 文件仅运行我的应用程序的旧版本
- sql-server - SQL Server:日期列中的月份名称
- clojure - with cloure lein ring server, how to set max heapsize when starting the web appication?
- jquery - jQuery animate() 不会触发
- java - Is possible to use the instance ValueEventListener for two different calls with addValueEventListener, at same Activity?
- sql - oracle CONNECT_BY_ROOT searching within a group
- sql - My sql statement does not like my partion over statement
- php - Php Sphinx,在 setFilter() 中使用或
- java - 如何使用 Runtime.exec() 发送的“Get-VpnConnection”PowerShell 命令获取 VPN 的 ConnectionStatus?
- svg - SVG-Edit 可以在独立/离线环境中工作吗?