我想从两个独立项目的列表中创建一个列表.
还有其他类似的问题,但似乎没有任何关注有效地解决这个问题,因为列表是几百万项长.
完全不相关:我是唯一一个讨厌标签建议框如何掩盖"发布你的问题"按钮的人吗?
在回答这个问题时,一场辩论开始于对QuickSort复杂性的评论.我在大学时代记得的是,在最好的情况O(n^2)
下,QuickSort是最坏的情况,O(n log(n))
在平均情况下O(n log(n))
(但是受到更严格的约束).
我需要的是一个正确的数学解释,意思是average complexity
清楚地解释一下那些相信大O符号只能用于最坏情况的人.
我记得如果要定义平均复杂度,你应该考虑所有可能输入的算法的复杂性,计算有多少退化和正常情况.如果当n变大时,退化情况除以n的数量倾向于0,则可以说正常情况下整体函数的平均复杂度.
这个定义是正确的还是平均复杂度的定义不同?如果它是正确的,有人可以比我更严格地陈述它吗?
假设我有以下嵌套列表:
L = [['John','Sayyed'], ['John' , 'Simon'] ,['bush','trump'],
['Sam','Suri','NewYork'],['Suri','Orlando','Canada']]
Run Code Online (Sandbox Code Playgroud)
如何通过将具有共同元素的子列表与该组中的至少另一个子列表结合起来,对这些子列表进行分组?所以对于前面的例子,结果应该是:
[['John','Sayyed','Simon'] ,['bush','trump'],
['Sam','Suri','NewYork','Orlando','Canada']]
Run Code Online (Sandbox Code Playgroud)
因此,前两个子列表在他们共享时加入'John'
.有人可以分享他们宝贵的想法吗?
我有一个问题,我找不到一个好的答案:我想合并两个列表,但保持每个对象EX出现的次数相同:
list1 = [2,3,7]
list2 = [2,2,5]
Run Code Online (Sandbox Code Playgroud)
合并两个列表后,结果应如下所示:
res = [2,2,3,5,7] #it does not need to be sorted
Run Code Online (Sandbox Code Playgroud)
观察从一开始就有三个"2"但合并后应该只有两个"2"
我找到的最接近的是这篇文章:组合两个列表并删除重复项,而不删除原始列表中的重复项
但这不符合我想要的方式.
另一个例子:
l1 = [2]
l2 = [3]
l3 = [2,2]
l4 = [5]
l5 = [2,3]
#after adding all the lists above
result = [2,2,3,5]
Run Code Online (Sandbox Code Playgroud) 我一直试图找出一些东西,最简单的解释方法是使用一个例子:
a = [[1, 2, 4], [2, 5], [0, 3, 7, 8], [12, 3, 6], [18, 14]]
Run Code Online (Sandbox Code Playgroud)
这是我开始的那种列表.我需要最终得到一个列表,其中包含包含重叠元素的所有列表的列表.
result = [[1, 2, 4, 5], [0, 3, 6, 7, 8, 12], [14, 18]]
Run Code Online (Sandbox Code Playgroud)
我该怎么做?
亲切的问候,Daquicker