华为机试HJ58:输入n个整数,输出其中最小的k个

Posted 翟天保Steven

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了华为机试HJ58:输入n个整数,输出其中最小的k个相关的知识,希望对你有一定的参考价值。

作者:Steven
版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处

题目描述:

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

本题有多组输入样例,请使用循环读入,比如while(cin>>)等方式处理

输入描述:

第一行输入两个整数n和k
第二行输入一个整数数组

输出描述:

输出一个从小到大排序的整数数组

示例:

输入:

5 2
1 3 5 7 2

输出:

1 2

解题思路:

本题比较简单,就输入n个整数后用sort快速排序,再输出前k个即可。

测试代码:

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int main()
{
    int n,k;
    while(cin>>n>>k)
    {
        vector<int> nums;
        for(int i=0;i<n;++i)
        {
            int temp;
            cin>>temp;
            nums.push_back(temp);
        }
        sort(nums.begin(),nums.end());
        for(int i=0;i<k;++i)
        {
            cout<<nums[i]<<" ";
        }
        cout<<endl;
    }
    return 0;
}

以上是关于华为机试HJ58:输入n个整数,输出其中最小的k个的主要内容,如果未能解决你的问题,请参考以下文章

华为机试HJ46:截取字符串

[华为]输入n个整数,输出其中最小的k个

华为机试HJ97:记负均正

华为机试HJ97:记负均正

华为机试HJ51:输出单向链表中倒数第k个结点

华为机试HJ108:求最小公倍数