我不确定如何得出以下两个函数的时间和空间复杂度。
在以下函数中,calver-test-2019.03.29.tar.gz
是字符串的元组,而schedule
是字符串。我认为这里的时间复杂度为O(n ^ 2),因为对于每个递归,在对course
进行切片然后将其连接到长度为n个字符串的元组时,它的时间复杂度为O(n)。总共有n个递归-因此,O(n * n)= O(n ^ 2)。
对于发生切片然后进行级联的部分,是因为我在技术上将字符串元组(schedule[0]
)的每个元素添加到一个字符串(schedule[1:]
)上,该元组中总共有n个元素?
对于空间复杂度,我认为它也是O(n ^ 2),因为每次进行切片和串联时,都会创建一个新的n元组空间。在n次递归中会发生这种情况,因此,O(n * n)= O(n ^ 2)。
schedule[0]
在以下函数中,def drop_class(schedule, course):
if schedule==():
return ()
elif schedule[0] == course:
return schedule[1:]
else:
return (schedule[0],) + drop_class(schedule[1:], course)
和letter
都是字符串。
我认为,由于上述示例中的相同原因,这两者的时间和空间复杂度也分别为O(n ^ 2)。
word
但是,我仍然不确定我是否以正确的方式解决问题,并且希望能对此提供一些指导。谢谢。