Big O表示法的正确表述:O(n)+O(m)能否替代O(n+m)?
O(n)+O(m) 是否属于错误表述?
从大O符号的数学定义来看,O(n) + O(m)和O(n+m)是完全等价的:
- 大O符号本质是描述函数增长速度的集合,
O(n)代表所有不超过n线性增长的函数,O(m)同理。 - 两个集合的“和”(即任意取f∈O(n)、g∈O(m),得到f(n)+g(m)),其增长速度刚好被
n+m的线性增长所约束,完全符合O(n+m)的定义。
但你在测试中被判错,核心原因是行业惯例和标准表述规范:
- 算法分析领域的通用做法是将同阶的复杂度项合并简化,比如不会写
O(n)+O(n)而是直接写O(n),O(n)+O(m)也会被统一简化为O(n+m),这是约定俗成的简洁表达。 - 多数算法测试/考试会要求使用最符合行业共识的标准写法,哪怕数学上等价,非标准表述也会被判定错误,目的是让学习者养成规范的表达习惯。
简单说:数学上没错,但在算法分析的常规语境和考核场景里,O(n+m)才是正确且被认可的写法。
内容的提问来源于stack exchange,提问作者Yuri Desideri
相关产品推荐
相关产品推荐

