处理不同输入的嵌套循环函数,对应的Big O notation是什么?
函数
compressBoxesTwice的时间复杂度分析 先拆解函数的核心执行逻辑:
- 外层
forEach遍历box1,循环次数等于box1的元素个数,我们记为m - 每执行一次外层循环,就会完整遍历一遍
box2的内层forEach,内层循环次数等于box2的元素个数,记为n
总的执行次数是外层循环次数乘以内层循环次数,也就是 m * n 次。对应的Big O表示法就是 O(m*n)。
你提到的同一输入下的O(n²),其实是O(m*n)的特例——当m和n相等(即嵌套循环处理同一个数组),此时复杂度可简化为O(n²)。而在这个函数里,两个循环依赖的是独立的输入规模,所以需要用两个不同的变量来表示,最终复杂度是两个输入长度的乘积。
内容的提问来源于stack exchange,提问作者Hamza Baig
相关产品推荐
相关产品推荐

