如何解决两种方法的时间复杂度一种方法是使用dict,另一种方法是使用列表
给问题一个数组A和B。根据数组A定义的顺序对B进行排序。B是数组A的子集。 例如:
Input:
a = [52,23,34,1,98,2,57,6,12,89,176,45,90,35 ]
b = [12,52,35]
Output = [52,35]
说明-由于52在数组A中排在第一位,因此我们先打印该数组,然后再打印1,依此类推...
在python3中使用Hashmap / dictionary的解决方案1:
a = [52,35]
d ={}
j =0
for i in b:
d[i]= j
j = j+1
for i in a:
if i in d:
print(i)
使用数组的解决方案2:
a = [52,35]
for i in a:
if i in b:
print(i)
所以我的问题是解决方案1和解决方案2的时间复杂度是否不同? 还是O(n ^ 2) 两种解决方案...还是解决方案1的O(n)和解决方案2的O(n ^ 2)...或任何其他复杂性
解决方法
实际上搜索列表中的值是O(n)复杂度,因此第二种解决方案更糟糕,因为其O(n ^ 2) 在字典中搜索关键字时为O(1),因此第一个解决方案为O(n)
,解决方案1:O(| a | + | b |)
解决方案2:O(| a | * | b |)
解决方案1应该使用集合,而不是字典。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。