剑指offer——最小的K个数

xiaoxiao2021-02-28  90

题目描述

输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。

思路:TreeSet是有序的,全部放进去,然后取出k个来。

题目注意,如果k大于数组长度 ,是要return 空的集合的。

import java.util.ArrayList; import java.util.Iterator; import java.util.TreeSet; public class Solution { public ArrayList<Integer> GetLeastNumbers_Solution(int [] input, int k) { ArrayList<Integer>list = new ArrayList<>(); if(input.length==0||k==0||k>input.length)return list; TreeSet<Integer>set = new TreeSet<>(); for (int i = 0; i < input.length; i++) { set.add(input[i]); } Iterator<Integer>iterator =set.iterator(); int num=0; while(num<k&&iterator.hasNext()){ list.add(iterator.next()); num++; } return list; } }

转载请注明原文地址: https://www.6miu.com/read-52689.html

最新回复(0)