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;
    }
};
全部评论

相关推荐

02-15 17:05
已编辑
东华理工大学 前端工程师
Beeee0927:我建议是精简一点吧,比如主修的课程,技能特长,自我评价我是觉得可以删掉了。然后项目经历可能要考虑怎么改得更真实一点,因为就我看起来感觉里面太多的东西像是在实际项目中才能接触到的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务