下面Java代码的时间复杂性是什么

下面Java代码的时间复杂性是什么,java,data-structures,time-complexity,Java,Data Structures,Time Complexity,这是一个简单的java代码,可以在一个数组中找到其和可以被targetNum整除的不同三元组的总数。代码运行良好,但我需要确保其时间复杂度不超过O(n^2) publicstaticvoidmain(字符串[]args){ int totalNum=10; int targetNum=5; int-inputArray[]={1,10,4,3,2,5,0,1,9,5}; HashMap tempMap=新的HashMap(); int tempCount=1; 对于(inti=0;i而言,发布代

这是一个简单的java代码,可以在一个数组中找到其和可以被targetNum整除的不同三元组的总数。代码运行良好,但我需要确保其时间复杂度不超过O(n^2)

publicstaticvoidmain(字符串[]args){
int totalNum=10;
int targetNum=5;
int-inputArray[]={1,10,4,3,2,5,0,1,9,5};
HashMap tempMap=新的HashMap();
int tempCount=1;

对于(inti=0;i而言,发布代码的时间复杂度为O(n^3)

第一个循环是O(n^2):它是一个嵌套循环,其中两个循环的范围与O(n)成正比


第二个循环是O(n^3):虽然它看起来很像第一个循环(一个循环嵌套在另一个循环中),但外循环的范围与O(n^2)成正比,内循环与O(n)成正比。这就得到了一个总的O(n^3)。

谢谢你的评论。我需要把它降到n^2,@RohanJain,试着用O(n)中的两个数字来解决这个任务这是一个实际的问题:如果三个数字的和可以被一个神秘的常数M整除,那么三个数字是特殊的。找出有多少不同的三个数字的和可以被M整除。不幸的是,这个问题对他来说很难解决,他需要你的帮助wo个整数作为输入,N和M,分别表示序列中的整数数和神秘常数。接下来,将N个整数作为输入(允许重复整数)。输出应仅包含一个整数,即其总和可被M整除的不同三元组数
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);
}