剑指offer——最小的k个数

十年热恋 提交于 2020-02-21 07:16:41

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

思路:题目很简单,排序就行。

import java.util.ArrayList;
import java.util.Arrays;
public class Solution {
   
       public ArrayList<Integer> GetLeastNumbers_Solution(int [] input, int k) {
       ArrayList<Integer> ans= new ArrayList<>();
        if (k>input.length)
            return ans;
        Arrays.sort(input);
        
        for (int i=0;i<k;i++)
            ans.add(input[i]);
        return ans;
    
    }
}

或者用Treeset更快一点

import java.util.ArrayList;
import java.util.*;
public class Solution {
   
       public ArrayList<Integer> GetLeastNumbers_Solution(int [] input, int k) {
       
        TreeSet<Integer> treeSet = new TreeSet<>();
        ArrayList<Integer> ans =new ArrayList<>();
        if (input.length<k)
            return ans;
        for (int i =0 ;i <input.length;i++){
            treeSet.add(input[i]);
        }
        Iterator it=treeSet.iterator();
        while(it.hasNext()&&k--!=0){
            ans.add((Integer)it.next());
        }
        return ans;
    
    }
}
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!