当两次迭代涉及不同的输入时,如何计算时间复杂度?

时间:2017-02-10 18:38:00

标签: algorithm time-complexity

合并输入中给出的范围。

输入:(0,1)(3,5),(4,8),(10,12),(9,10)

输出:(0,1),(3,8),(9,12)

代码:

第1步:排序(输入) - nlogn

创建一个数组,其长度是排序后的最后一个数字。在上面的例子中,它是12。

第2步:

int tupleCounter = 0;
        for(Tuple tuple : tuples){
            for(int i=tuple.first; i<=tuple.second; i++){
                if(period[i] != -1){
                    tupleCounter = period[i];
                }
                period[i] = tupleCounter;
            }
            tupleCounter ++;
        }

上述块的输出:[0,0,-1,1,1,1,1,1,1,2,2,2,2]

第3步:拆分它们并显示输出。

如何计算第2步的时间复杂度?外循环按照输入的大小运行,它是N,内循环基于每个部分中的值运行,最终是数组的长度(m)。

因此步骤2的时间复杂度为O(n + m)。我是对的吗?

0 个答案:

没有答案