博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
牛客网 | 高频面试题 | 最小的K个数
阅读量:4141 次
发布时间:2019-05-25

本文共 1033 字,大约阅读时间需要 3 分钟。

文章目录

题目

题目描述输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4。示例1输入[4,5,1,6,2,7,3,8],4返回值[1,2,3,4]

解析

需要考虑边界问题:n小于k!

k轮的冒泡排序

class Solution {
public: vector
GetLeastNumbers_Solution(vector
input, int k) {
int len=input.size(); if(len
res; int j=0; for(int i=0;i

小顶堆

class Solution {
public: vector
getLeastNumbers(vector
& arr, int k) {
vector
vec(k, 0); if (k == 0) {
// 排除 0 的情况 return vec; } priority_queue
Q; //前k个数入堆 for (int i = 0; i < k; ++i) {
Q.push(arr[i]); } //把剩余的数入堆,保证堆里只有k个数 for (int i = k; i < (int)arr.size(); ++i) {
if (Q.top() > arr[i]) {
Q.pop(); Q.push(arr[i]); } } //将结果保存在vec中 for (int i = 0; i < k; ++i) {
vec[i] = Q.top(); Q.pop(); } return vec; }};

转载地址:http://ezevi.baihongyu.com/

你可能感兴趣的文章
《读书笔记》—–书单推荐
查看>>
JAVA数据类型
查看>>
【Python】学习笔记——-6.2、使用第三方模块
查看>>
【Python】学习笔记——-7.0、面向对象编程
查看>>
【Python】学习笔记——-7.2、访问限制
查看>>
【Python】学习笔记——-7.3、继承和多态
查看>>
【Python】学习笔记——-7.5、实例属性和类属性
查看>>
git中文安装教程
查看>>
虚拟机 CentOS7/RedHat7/OracleLinux7 配置静态IP地址 Ping 物理机和互联网
查看>>
Jackson Tree Model Example
查看>>
常用js收集
查看>>
如何防止sql注入
查看>>
springmvc传值
查看>>
在Eclipse中查看Android源码
查看>>
Android使用webservice客户端实例
查看>>
[转]C语言printf
查看>>
C 语言 学习---获取文本框内容及字符串拼接
查看>>
C 语言学习 --设置文本框内容及进制转换
查看>>
C 语言 学习---判断文本框取得的数是否是整数
查看>>
C 语言 学习---ComboBox相关、简单计算器
查看>>