题解 | #输入n个整数,输出其中最小的k个#

输入n个整数,输出其中最小的k个

http://www.nowcoder.com/practice/69ef2267aafd4d52b250a272fd27052c

不使用系统排序算法的操作:

#include <list>
#include <math.h>
using namespace std;

int main()
{
    int n, k;
    while (cin >> n >> k) {
        int m = 0;
        list<int> mm;
        while (n-->0) {
            int v;
            cin >> v;
            
            if (mm.empty()) {
                mm.push_back(v);
            }
            else {          
                bool done = false;
                int pre = 0;
                for (auto it = mm.begin(); it != mm.end(); ++it) {
                    if (v > pre && v <= *it) {
                        mm.insert(it, v);
                        done = true;
                    }
                    pre = *it;
                }
                
                if (mm.size() < k && !done)
                    mm.push_back(v);
                
                if (mm.size() > k)
                    mm.pop_back();
            }
        }
            
        for (auto it : mm)
            cout << it << ' ';
        cout << endl;

    }
    return 0;
}
全部评论

相关推荐

喵_coding:年底缺人是短视频营造出来的 而且一般说的也很宽泛 不是特指后端
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务