【发布时间】:2018-03-09 09:56:41
【问题描述】:
第一行有两个值 N 和 K。N 是在初始行之后的输入数,K 是要找出的最大数。
示例输入:
5 2
6
7
17
11
6
(5 行输入,正在寻找 2 个最大值)
示例输出:
17
11
由于某种原因,我只得到第一个输出,而不是第二个。
vector<long> vectorAddCheck(vector<long> x, long value){
if(x.empty()){
x.push_back(value);
}
else {
for(int i = 0; i < x.size(); i++){
if(x[i] < value){
x[i] = value;
}
}
}
return x;
}
int main() {
long numLines, numOutputs, temp;
vector<long> outputList = {};
cin >> numLines >> numOutputs;
for(int i = 0; i < numLines; ++i){
cin >> temp;
outputList = vectorAddCheck(outputList, temp);
}
for(int i = 0; i < outputList.size(); i++){
cout << outputList[i] << endl;;
}
return 0;
}
【问题讨论】:
-
为什么不将它们全部添加到数组中,对其进行排序,然后剥离第一个 N?
-
当向量的长度为 0 时,将值推送到向量,因此向量的长度最大为 1。
-
得到
std::partial_sort的罕见用例! -
睡眠不足让我无法思考。这使得这变得简单多了。谢谢! @tadman