劍指offer每日一題算法題(java解法)
方便日後複習,從今天開始。
算法之行始於足下
[編程題]最小的k個數-- Java實現
------------------------------------------------------------------------------------------------------
題目描述
輸入n個整數,找出其中最小的K個數。例如輸入4,5,1,6,2,7,3,8這8個數字,則最小的4個數字是1,2,3,4,。
前提:
1.理解集合類的sort排序方法,默認調用是升序
解題思路:
1.先把數組放進集合,(因爲要返回集合類的結果)
2.想到了排序,然後再取前面k個數字。
3.取得話還要放進新的地方再一起返回比較麻煩,直接把不要的給刪除掉,於是想到逆序刪除。
import java.util.*;
public class Solution {
public ArrayList<Integer> GetLeastNumbers_Solution(int [] input, int k) {
ArrayList<Integer> list=new ArrayList<Integer>();
if(input.length==0||k<=0||k>input.length) return list;
//Arrays.sort(input);
for(int i=0;i<input.length;i++){
list.add(input[i]);
/*if(temp>input[i])
{
int a=temp;
temp=input[i];
input[i]=a;
}*/
}
Collections.sort(list);//使用Collections的sort方法
for(int i=input.length-1;i>=k;i--){
list.remove(i);
}
return list;
}
}