题目描述
输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。
C++
//堆排
class Solution {
public:
vector<int> GetLeastNumbers_Solution(vector<int> input, int k) {
vector<int> res;
if(input.empty()||k>(int)input.size()||k<1)
return res;
make_heap(input.begin(),input.end(),greater<int>());//生成小根堆
for(int i=0;i<k;i++)
{
res.push_back(input.front());
pop_heap(input.begin(),input.end(),greater<int>());
input.pop_back();
push_heap(input.begin(),input.end(),greater<int>());
}
return res;
}
};
JAVA
//快排
import java.util.ArrayList;
import java.util.Arrays;
public class Solution
{
public ArrayList<Integer> GetLeastNumbers_Solution(int [] input, int k)
{
ArrayList<Integer> list=new ArrayList<>();
if(input.length<k||k==0)
return list;
Arrays.sort(input);
for(int i=0;i<k;i++)
list.add(input[i]);
return list;
}
}
Python
# -*- coding:utf-8 -*-
class Solution:
def GetLeastNumbers_Solution(self, tinput, k):
# write code here
if tinput == None:
return None
l = len(tinput)
if k > l:
return []
tinput = sorted(tinput)
return tinput[:k]