【发布时间】:2017-11-19 07:23:19
【问题描述】:
这是一个简单的 java 代码,用于查找数组中的不同三元组的总数,其和可被 targetNum 整除。代码工作正常,但我需要确保它的时间复杂度不超过 O(n^2)。
public static void main(String [] args){
int totalNum = 10;
int targetNum = 5;
int inputArray[] = { 1,10,4,3,2,5,0,1,9,5 };
HashMap<Integer,int[]> tempMap = new HashMap<>();
int tempCount=1;
for(int i=0; i<totalNum-2; i++){
for(int j=i+1; j<totalNum; j++){
int num1 = inputArray[i];
int num2 = inputArray[j];
int [] tempArr = new int[2];
tempArr[0] = num1+num2;
tempArr[1] = j;
tempMap.put(tempCount,tempArr);
tempCount++;
}
}
int finalCount=0;
for(int i=1; i<tempCount; i++){
int [] tempArr = tempMap.get(i);
int val1 = tempArr[0];
int startIndex = tempArr[1]+1;
for(int j=startIndex; j<totalNum; j++){
int val2 = inputArray[j];
if((val1+val2)%targetNum == 0){
finalCount++;
}
}
}
System.out.print(finalCount);
}
【问题讨论】:
标签: java data-structures time-complexity