【发布时间】:2021-12-22 03:50:54
【问题描述】:
作者声称这种置换算法的时间复杂度:
from collections import deque
def find_permutations(nums):
nums_l = len(nums)
perms = deque()
perms.append([])
for num in nums: # (1)
for _ in range(len(perms)): # (2)
perm = perms.popleft()
for j in range(len(perm)+1): # (3)
new_perm = list(perm) # (4)
new_perm.insert(j, num) # (5)
perms.append(new_perm) # (6)
return perms
是n*n!
但我不明白为什么。这是我对每一行代码的时间复杂度的计算:
(1): len(nums) ~ n
(2): len(perms) ~ n!
(3): len(perm) ~ n
(4): n
(5): n
(6): n
所以总时间复杂度是:
n * n! * n * (n + n + n) ~ n^3 * n!
我错了吗?
【问题讨论】:
标签: algorithm time-complexity permutation