Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何高效地获取长度为2或2以上的数组的所有子数组?_Python_Arrays_Algorithm_Sub Array - Fatal编程技术网

Python 如何高效地获取长度为2或2以上的数组的所有子数组?

Python 如何高效地获取长度为2或2以上的数组的所有子数组?,python,arrays,algorithm,sub-array,Python,Arrays,Algorithm,Sub Array,产生的子阵列应该是 array =[1,2,3,4] O(n)?也许如果你有无限的内存,在实数/虚数系统中存储每个可能的子数组,以便有效访问,那么当然,你可以有任何你喜欢的复杂算法 …但现实地说,不管你做得有多有效,你都在沿着O(n^3)的方向看问题 [1,2],[2,3],[3,4],[1,2,3],[2,3,4],[1,2,3,4] 一行代码隐藏了两个循环和切片操作,所有这些都增加了复杂性。但是,它的效率和速度与底层算法所允许的一样。O(n)?也许如果你有无限的内存,在实数/虚数系统中存

产生的子阵列应该是

array =[1,2,3,4]
O(n)?也许如果你有无限的内存,在实数/虚数系统中存储每个可能的子数组,以便有效访问,那么当然,你可以有任何你喜欢的复杂算法

…但现实地说,不管你做得有多有效,你都在沿着O(n^3)的方向看问题

[1,2],[2,3],[3,4],[1,2,3],[2,3,4],[1,2,3,4]
一行代码隐藏了两个循环和切片操作,所有这些都增加了复杂性。但是,它的效率和速度与底层算法所允许的一样。

O(n)?也许如果你有无限的内存,在实数/虚数系统中存储每个可能的子数组,以便有效访问,那么当然,你可以有任何你喜欢的复杂算法

…但现实地说,不管你做得有多有效,你都在沿着O(n^3)的方向看问题

[1,2],[2,3],[3,4],[1,2,3],[2,3,4],[1,2,3,4]

一行代码隐藏了两个循环和切片操作,所有这些都增加了复杂性。但是,它的效率和速度与底层算法所允许的一样。

您无法以任何方式在
O(N
)中获得结果。
由于存在大小大于1的
2^N-1-N
子数组,因此总的复杂性将是
O(2^N)
,因为您必须获得所有子数组。

对于
O(2^N)
解决方案,您可以搜索已知的获取集的
幂集的问题
您无法以任何方式在
O(N
)中获得结果。
由于存在大小大于1的
2^N-1-N
子数组,因此总的复杂性将是
O(2^N)
,因为您必须获得所有子数组。
对于
O(2^N)
解决方案,您可以搜索获取集的
幂集的众所周知的问题

您可以始终尝试此解决方案以获取长度为2或更大的所有连续子阵列:

>>> [lst[i:j + 1] for i in range(len(lst)) for j in range(i + 1, len(lst))]
[[1, 2], [1, 2, 3], [1, 2, 3, 4], [2, 3], [2, 3, 4], [3, 4]]
您始终可以尝试此解决方案以获得长度为2或更大的所有连续子阵列:

>>> [lst[i:j + 1] for i in range(len(lst)) for j in range(i + 1, len(lst))]
[[1, 2], [1, 2, 3], [1, 2, 3, 4], [2, 3], [2, 3, 4], [3, 4]]

祝你好运,因为我认为你做不到。至少不是,当N=输入的大小时。祝你好运,因为我认为你做不到。当N=输入的大小时,至少不是。