在上网搜索时间复杂度相关的东西的时候知乎上看见一个人的提问计算时间复杂度,做个小记录
第一层是N+1;
第二次循环是1+2+。。。+n = n(n+1)/2
第三层比较麻烦,随着第二层数计算开始计算,
当j=0;次数是1;
当j=1;次数是1+2;
当j=3;次数是1+2+3
当j=n;次数是1+2+3+。。。+n;
因此第三层n的规律是f(n) = n(n+1)/2;
第三层总和是求和f(n),变成数列求和了。。。数学好久不接触忘记的差不多了,百度了一下。。。才想起来,囧
利用自然数平方求和公式1^2+2^2+3^2+...+n^2=n*(n+1)*(2n+1)/6
所以原数列求和为
(1/2)*[n*(n+1)*(2n+1)/6+(n(n+1))/2]=n*(n+1)*(n+2)/6
最终结果时间复杂度是O(n3),其实取巧方法是当所有的都是n,三层循环直接n3就可以,
但是知乎上下面有个回复答案不一样,各位看见了可以一起讨论一下;
,