暴力求解即可,三层遍历循环
优化的方法:
前缀数组:缩短了求和的时间
i、j、k将j作为外层循环,i和k并行的作为内部循环,减少了循环的层数,缩短了时间
public class test {
public boolean splitArray(int[] nums){
int len = nums.length;
int[] prefixSum = new int[len];
for(int i=0; i<len; i++){
if(i==0){
prefixSum[i] = nums[i];
}else{
prefixSum[i] += prefixSum[i-1] + nums[i];
}
}
for(int j=3; j<len-3; j++){
HashSet<Integer> set = new HashSet<>();
for(int i=1; i<j-1; i++){
int sum1 = prefixSum[i-1];
int sum2 = prefixSum[j-1] - prefixSum[i];
if(sum1 == sum2){
set.add(sum1);
}
}
for(int k=j+2; k<len-1; k++){
int sum3 = prefixSum[k-1] - prefixSum[j];
int sum4 = prefixSum[len-1] - prefixSum[k];
if(sum3 == sum4 && set.contains(sum3)){
return true;
}
}
}
return false;
}
}