题解 | #最小的K个数#

最小的K个数

http://www.nowcoder.com/practice/6a296eb82cf844ca8539b57c23e6e9bf

class Solution { public: vector GetLeastNumbers_Solution(vector input, int k) { vector ret; int length=input.size(); if(length==0 or k==0) return ret; ret.push_back(input[0]); //两部分其实一样,看懂这部分基本就会写了 搞个列表,大的放前面, //每次新的值过来,如果比最大的小,那删除前面第一个,找到新值位置放入 for(int i=1;i<k;i++){ if(input[i]>=ret[0]) ret.insert(ret.begin(),input[i]); else if(input[i]<=ret[ret.size()-1]) ret.push_back(input[i]); else { for(int j=ret.size()-1;j>=0;j--){ if(ret[j]>=input[i]) {ret.insert(ret.begin()+j+1,input[i]);break;} } } } //剔除更新 直接用的上面的,觉得不美观的自己整理一下,哈哈,我去下一道题了。 for(int i=k;i<length;i++){ if(input[i]<ret[0]) { //找地方放入 ret.erase(ret.begin()); if(ret.size()){ if(input[i]>=ret[0]) ret.insert(ret.begin(),input[i]); else if(input[i]<=ret[ret.size()-1]) ret.push_back(input[i]); else { for(int j=ret.size()-1;j>=0;j--){ if(ret[j]>=input[i]) {ret.insert(ret.begin()+j+1,input[i]);break;} } } }else{ // ret.push_back(input[i]); } }

    }
    return ret;
    
    
}

};

全部评论

相关推荐

07-14 12:29
门头沟学院 Java
后端岗,实习三周感觉有点想跑路了,担心秋招被拉黑,有没有佬是字节HR知道情况的
从零开始的转码生活:你实习三周都想跑路,将来拿到offer真的愿意在这干十几二十年吗
投递字节跳动等公司8个岗位
点赞 评论 收藏
分享
求offer的大角牛:不吃香菜
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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