例如,假设有一个函数迭代大小为 m 的数组两次和大小为 n 的数组迭代一次
func(){
for(i = 0; i < m; i++){//do something}
for(i = 0; i < n; i++){//do something}
for(i = 0; i < m; i++){//do something}
}
Run Code Online (Sandbox Code Playgroud)
因为 O(2m) = O(m),所以将其时间复杂度写为 O(2m+n) = O(m+n) 是否正确?
对于另一个问题,如果我有一个迭代大小为 n, k 次的数组的函数,其中 k 是在调用该函数之前根据输入计算的。
func(int k){
for(int i = 0; i < k; i++){
for(int j = 0; j < n; j++){}
}
}
Run Code Online (Sandbox Code Playgroud)
和第一个问题一样,可以说它的时间复杂度是 O(k*n) = O(n) 吗?