题目描述
输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。
思路1:先排序,然后选择前K个数输出。(注意:这里作弊地用了Java自带的排序方法Arrays.sort() ),如果这样做的话,这个题目就没有啥意义了,啥知识点都没复习到.....
import java.util.Arrays;
import java.util.ArrayList;
public class Solution
{
public ArrayList<Integer> GetLeastNumbers_Solution(int [] input, int k)
{
ArrayList<Integer> list = new ArrayList<>();
if(k > input.length)
{
return list;
}
Arrays.sort(input);//java内置的排序
for(int i=0; i<k; i++)
{
list.add(input[i]);
}
return list;
}
}
思路2:冒泡排序,在最外层循环K次就可以了,不用全部排序,只是挑选出K个元素。
import java.util.Arrays;
import java.util.ArrayList;
public class Solution
{
public ArrayList<Integer> GetLeastNumbers_Solution(int [] input, int k)
{
ArrayList<Integer> list = new ArrayList<>();
if(k > input.length)
{
return list;
}
for(int i=0; i<k; i++)//循环K次即可
{
for(int j=i+1; j<input.length; j++)
{
if(input[j] < input[i])
{
int temp = input[i];
input[i] = input[j];
input[j] = temp;
}
}
list.add(input[i]);//每找到一个最小值就加到list中
}
return list;
}
}