Python 什么是(for循环中的list.index())复杂性
对于(第一个列表)中的每个数字: 第二个列表。索引(编号)->变量Python 什么是(for循环中的list.index())复杂性,python,list,algorithm,data-structures,time-complexity,Python,List,Algorithm,Data Structures,Time Complexity,对于(第一个列表)中的每个数字: 第二个列表。索引(编号)->变量 打印(第一个列表中的数字索引)和(变量)当前方法中存在的问题是,使放置一个元素依赖于整个相反的列表。相反,只需制作一张图表,说明每个元素在每个列表中的位置 使用dict检查列表1,填写key:value作为元素及其索引。这给你 { 5: 0, 8: 1, 1: 2, 4: 3 } 现在,看一下清单2。访问每个元素;如果存在(使用故障保护功能的get),则打印存储的索引(列表1)和当前索引(列表2)。如果不存在,只需跳过打印即可
打印(第一个列表中的数字索引)和(变量)当前方法中存在的问题是,使放置一个元素依赖于整个相反的列表。相反,只需制作一张图表,说明每个元素在每个列表中的位置 使用dict检查列表1,填写key:value作为元素及其索引。这给你
{ 5: 0, 8: 1, 1: 2, 4: 3 }
现在,看一下清单2。访问每个元素;如果存在(使用故障保护功能的get
),则打印存储的索引(列表1)和当前索引(列表2)。如果不存在,只需跳过打印即可
O(N)复杂性。您可以使用映射数据结构将时间复杂性降低到O(N) 步骤1:遍历列表一并将列表一的所有值的索引存储在地图中。
对于eg;列表1={5,8,1,4}
您的地图将看起来像
5->0
8->1
1->2
4->3
步骤2:在列表1中存储值后,遍历列表2并检查元素是否存在于地图中,如果存在,则打印其索引,否则跳过该元素
对于eg List2={1,5,4,8}
输出:
val=1,2->0
val=5,0->1
val=4,3->2
val=8,1->3
注意:只有当两个列表中的元素是不同的时,实现才会起作用。否则,特定值将有多个索引
如果你使用C++,那么我建议你在OO(1)中使用unOrdEdjPad。< /P>
此实现的时间复杂性将是
O(list1.size()+list2.size())
如果代码是这样的,那么空间复杂度将是O(list1.size())
对于在第一个中搜索的:#O(n)
i=第二个索引(已搜索)#O(m)
印刷品(一)
然后答案是O(n*m)
,其中n=len(第一)
,m=len(第二)
如果你使用字典,它可以在
O(n+m)
中完成。你能提供一些示例输入和输出吗?我很难理解这个问题。人们在这么短的时间内问同样的问题,这很可疑: