代码:
#include <iostream>
#include <vector>
template<typename T>
std::vector<T> flatten(std::vector<std::vector<T>> const &vec)
{
std::vector<T> flattened;
for (auto const &v: vec) {
flattened.insert(flattened.end(), v.begin(), v.end());
}
return flattened;
}
int main()
{
std::vector<std::vector<int>> vec {
{ 1, 2, 3 }, { 4, 5 }, { 6, 7, 8, 9 }
};
std::vector<int> flattened = flatten(vec);
for (int &i: flattened) {
std::cout << i << ' ';
}
return 0;
}
上面代码的时间复杂度是O(n(还是O(n^2(?我知道这只是一个for((循环,但在for循环中使用insert((会使其为O(n^2(吗?
O(∑i=0nmi(,
其中n是外部向量的大小,mi为第i个内部向量的大小。
如果外向量的大小和内向量的大小都是O(n(,那就等于O(n2(。