【发布时间】:2025-11-22 20:40:02
【问题描述】:
我正在尝试找出这两组 {1,2,3,4,5,6} 和
{1, 3, 6, 4, 1, 2} 。 missing 向量应该只包含 {5} 但它包含 {2,4,5} 。我在这里做错了什么?
#include <set>
#include <vector>
#include <iostream>
using namespace std;
int solution(vector<int> &A) {
vector<int> missing;
vector<int> range(A.size());
for(int i=1; i<= A.size(); i++) range[i-1] = i;
set_difference(range.begin(), range.end(), A.begin(), A.end(), std::inserter(missing, missing.end()));
return missing[0]; // Missing contains 2,4,5 where as it should had contain just 5
}
int main(){
vector<int> A = {1, 3, 6, 4, 1, 2};
cout << solution(A);
return 0;
}
【问题讨论】:
-
set_difference需要排序范围作为输入。{1, 3, 6, 4, 1, 2}未排序(至少不符合默认比较器)。
标签: c++ stl set-difference