Arrays 如何高效地找到阵列中所有可能的子阵列?

Arrays 如何高效地找到阵列中所有可能的子阵列?,arrays,data-structures,Arrays,Data Structures,如何有效地找到阵列的所有可能的子阵列?阵列的子阵列A是A[i..j]其中0我们可以使用函数找到所有可能的子阵列 代码段: #包括 使用名称空间std; void生成子字符串(字符串str) { 如果(str.size()==0) { 返回; } 其他的 { 对于(int i=0;i请尝试以下代码: def subarray(a, n) : for i in range(0,n): for j in range(i, n) :

如何有效地找到阵列的所有可能的子阵列?

阵列的子阵列A是
A[i..j]
其中
0我们可以使用函数找到所有可能的子阵列

代码段:
#包括
使用名称空间std;
void生成子字符串(字符串str)
{
如果(str.size()==0)
{
返回;
}
其他的
{

对于(int i=0;i请尝试以下代码:

def subarray(a, n) :
      for i in range(0,n):
             for j in range(i, n) :
                   for k in range(i, j+1) :
                          print(a(k), end=" ")
                   print("\n", end=" ")
a=[1, 2,3,4,5]
n=len(a)
print( all non - empty subarrays are:-)
subarray(a, n) 
在JavaScript中

function subarray(arr){
  let sub = []
  for(let i=0;i<=arr.length-1;i++){
    for(let j=arr.length-1;j>=i;j--){
      sub.push(arr.slice(i,j+1))
    }
  }
  return sub
}
功能子阵列(arr){
让sub=[]
对于(设i=0;i=i;j--){
副推力(arr.slice(i,j+1))
}
}
返回接头
}
O(n^2)方法可以是:

for (int i = 0; i < arr.length; i++) {
    String res = "";
        for (int j = i; j < arr.length; j++) {
            res += arr[j] + " ";
                System.out.println(res);
    }
}
for(int i=0;i
这种方法的时间复杂度为
O(n^3)
这是最有效的方法吗?我认为哈希是一种更合适的方法,因为问题是如何高效地找到子数组
3时间复杂度方法,不是一种有效的方法。抱歉,但该算法根本没有效率。这是一个O(n^3)解决方案,一点也不有效。对不起,但是这个算法一点也不有效。这个算法一点也不有效。这个算法一点也不有效。这个算法一点也不有效
function subarray(arr){
  let sub = []
  for(let i=0;i<=arr.length-1;i++){
    for(let j=arr.length-1;j>=i;j--){
      sub.push(arr.slice(i,j+1))
    }
  }
  return sub
}
for (int i = 0; i < arr.length; i++) {
    String res = "";
        for (int j = i; j < arr.length; j++) {
            res += arr[j] + " ";
                System.out.println(res);
    }
}