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

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

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

using namespace std;
int main()
{
    int n = 0, k = 0;
    while(cin >> n >> k)
    {
        vector<int> arr;
        int num = 0;
        while(n--)
        {
            cin >> num;
            arr.push_back(num);
        }
        vector<int> vec(k, 0);
        
        priority_queue<int> Q;
        for (int i = 0; i < k; ++i) 
        {
            Q.push(arr[i]);
        }
        for (int i = k; i < (int)arr.size(); ++i) 
        {
            if (Q.top() > arr[i])
            {
                Q.pop();
                Q.push(arr[i]);
            }
        }
        for (int i = 0; i < k; ++i) 
        {
            vec[i] = Q.top();
            Q.pop();
        }
        for(int i = k - 1; i >0; --i)
        {
            cout << vec[i] << ' ';
        }
        cout << vec[0] << endl;
        
    }
    return 0;
}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

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