求捞,这个代码的时间复杂度为什么是o(n^3)

学术版

@[hnyn](/user/1288805) 额 因为 ```tt``` 并不会像平常一样执行一遍循环就重置为 $0$ 而是一直在前进,所以总体上来说 ```tt``` 的 ```++``` 次数为 $n$ 次,所以总复杂度为 $O(m^{2}n)$ 的。
by kevinZ99 @ 2024-03-26 19:24:50


@[kevinZ99](/user/1117080) emmm,但是在第二层循环中j变为2时,tt不是重新变为1吗?
by hnyn @ 2024-03-26 19:32:05


@[hnyn](/user/1288805) 哈哈哈,我这个小白真的懵逼,啥的不会,┭┮﹏┭┮
by hnyn @ 2024-03-26 19:34:00


@[hnyn](/user/1288805) 您可以手动模拟一下 $m=2,n=2$ 的时候看一下? 因为 $for$ 循环中的第一个语句是赋值操作所以,外面两层循环的复杂度为 $m^{2}$ ,而内部的(第三个)循环类似于双指针,虽然有两个循环但是其 ```tt++``` 的次数明显为最多为 $n$ 所以复杂度为 $O(m^{2}n)$
by kevinZ99 @ 2024-03-26 19:44:10


@[kevinZ99](/user/1117080) 哦,是因为tt指针先于hh指针先走吗?^_^,看来我之前有点想当然了,没仔细模拟,以为hh走一遍最远tt自然也能到一次最远
by hnyn @ 2024-03-26 19:54:06


@[kevinZ99](/user/1117080) 谢大佬了,自己想了很久,都没想出来,一句化小模拟就出来了
by hnyn @ 2024-03-26 19:56:07


@[hnyn](/user/1288805) 懂了就好捏
by kevinZ99 @ 2024-03-26 19:59:50


|