我被给予了几行的长度,我需要找到其中有多少会形成一个三角形
输入就像这样
7
1 4 13 2 25 6 11
其中7是否。行和以下行包含所有行的长度。
这就是我的代码在其核心
的样子 for(int i=0;i<n-2;i++){ //n is the total no. of lines given initially
for(int j=i+1;j<n-1;j++){
for(int k=j+1;k<n;k++){
if(l[i]+l[j]>l[k]){
noOfTriangles++;
}else{
break;
}
}
}
}
即使代码按预期工作,现在需要n ^ 3的时间,这超过了某些输入的时间限制。无论如何,我可以优化它?
编辑:我忘了提到我在实现嵌套for循环之前首先对数组进行了排序。