Arrays 如何高效地找到阵列中所有可能的子阵列?
如何有效地找到阵列的所有可能的子阵列?阵列的子阵列A是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[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);
}
}