题目描述
输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。
解题思路
思路1
思路2
总结
代码
public class GetLeastNumbers_Solution {
public ArrayList<Integer> GetLeastNumbers_Solution(int []nums, int k){
ArrayList<Integer> list = new ArrayList<Integer>();
int lens = nums.length;
if(nums == null || lens == 0 || k > lens || k <= 0){
return list;
}
TreeSet<Integer> kSet = new TreeSet<Integer>();
for (int i = 0; i < lens; i++) {
if(kSet.size() < k){
kSet.add(nums[i]);
}else if(nums[i] < kSet.last()){
kSet.remove(kSet.last());
kSet.add(nums[i]);
}
}
Iterator<Integer> iterator = kSet.iterator();
while(iterator.hasNext()){
list.add(iterator.next());
}
return list;
}
}