JZ29 最小的k个数

题目描述

输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。

思路

看到题目第一反应是用冒泡排序,但是不需要全部排完序,因为只要最小的k个数,所以外循环只需要k次就行了
但是!!!注意,注意特殊情况,k大于数组长度的情况!!!

我想说

几种排序方法每次面试笔试前都得看一下思路,最好能写一下程序

代码

class Solution {
public:
    vector<int> GetLeastNumbers_Solution(vector<int> input, int k) {
        vector<int> output;
        if(input.size()<=0)
            return output;
        if(k>input.size())
            return output;
        for(int i=0;i<k;i++)
        {
            int temp;
            for(int j=0;j<input.size()-i-1;j++)
            {
                if(input[j]<input[j+1])
                {
                    temp=input[j];
                    input[j]=input[j+1];
                    input[j+1]=temp;
                }
            }
            output.push_back(input[input.size()-i-1]);
        }
        return output;
    }
};
全部评论

相关推荐

10-30 23:23
已编辑
中山大学 Web前端
去B座二楼砸水泥地:这无论是个人素质还是专业素质都👇拉满了吧
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务