您的位置:首页 > 其它

最小的k个数

2015-09-18 10:51 134 查看
输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。

[code]typedef multiset<int, greater<int> >  intSet;
typedef multiset<int, greater<int> >::iterator setIterator;
class Solution {
public:
    vector<int> GetLeastNumbers_Solution(vector<int> input, int k)
    {
        vector<int> res;
        intSet tmp;
        tmp.clear();
        if (input.size() < k || k < 1)
            return res;
        vector<int>::const_iterator iter = input.begin();
        for (; iter < input.end(); iter++)
        {
            if (tmp.size() < k)
            {
                tmp.insert(*iter);
            }
            else
            {
                setIterator iterGreatest= tmp.begin();
                if (*(tmp.begin()) > *iter)
                {
                    tmp.erase(iterGreatest);
                    tmp.insert(*iter);
                } 
            }
        }
        setIterator iterSet = tmp.begin();
        vector<int>::iterator iterV = res.begin();
        for (; iterSet !=tmp.end(); iterSet++)
        {
            iterV = res.insert(iterV,*iterSet);

        }
        return res;
    }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: