【发布时间】:2022-01-21 05:55:54
【问题描述】:
我必须找到数组 a[] 中索引为 i,j,k 的所有组合,使得 i 我尝试了递归方式并将所有组合存储在一个集合中,这样如果我再次访问相同的组合,我只会通过从集合中检查它来从那里返回 我的代码是这样的,但我正在为大型案例获得 TLE
谁能给我最有效的方法 static Set<String> set = new HashSet<>();
static int sum = 0;
static void solve(int i,int j,int k,int[] a){
if(i>=j || j>=k ||k>=a.length){
return;
}
//combination
String pre = String.valueOf(i)+String.valueOf(j)+String.valueOf(k);
if(set.contains(pre)){
return;
}
//operation to perform for every combination
int v = (a[i] | a[j] | a[k]) ^ (a[i] ^ a[j] ^ a[k]);
sum = sum+v;
solve(i,j,k+1,a);
solve(i,j+1,k,a);
solve(i+1,j,k,a);
}
【问题讨论】:
标签: java algorithm recursion data-structures dynamic-programming