以下代码的复杂性是什么?
set<int> S1, S2, ans;
set_intersection(S1.begin(), S1.end(), S2.begin(), S2.end(), inserter(ans, ans.begin()))
其中S1
和S2
是一些非空集,ans
是空集。
我知道将一个排序范围插入一个集合是线性的;但是也使用插入线性插入?
答案 0 :(得分:7)
插入器会记住上次插入每个项目的位置,并尝试在同一位置插入下一个项目。这是O(1),如果它是正确的地方。
这意味着将排序范围复制到插入器是整体线性的,所以你在这里很好。