美文网首页
《剑指offer》中和大数据相关的题目

《剑指offer》中和大数据相关的题目

作者: yues66 | 来源:发表于2017-05-14 15:08 被阅读0次

    面试题30、输入n个整数,找出其中最小的k个数,例如输入4,5,1,6,2,7,3,8这个8个数字,则最小的4个数字是1,2,3,4
    import java.util.ArrayList;
    import java.util.Comparator;
    import java.util.PriorityQueue;
    public class Solution {
    public ArrayList<Integer> GetLeastNumbers_Solution(int [] input, int k) {
    ArrayList<Integer> result = new ArrayList<Integer>();
    if(k > input.length || k<=0){
    return result;
    }
    //定义排列的顺序
    Comparator<Integer> cmp;
    cmp = new Comparator<Integer>(){
    public int compare(Integer o1, Integer o2){
    return o2-o1;
    }
    };
    //java中的最大堆结构
    PriorityQueue<Integer> qi = new PriorityQueue<Integer>(k,cmp);
    //添加k个元素,按照从小到大的顺序进行排列,能够逆序
    int i = 0;
    for(;i<k;i++){
    qi.add(input[i]);
    }
    // System.out.println("queue输出"+qi.size());
    // while(!qi.isEmpty()){
    // System.out.print(qi.poll()+" ");
    // }
    for(;i<input.length ;i++){
    if(input[i] < qi.peek()){
    qi.poll();
    qi.add(input[i]);
    }
    }
    while(!qi.isEmpty()){
    result.add(qi.poll());
    }
    return result;
    }
    }

    相关文章

      网友评论

          本文标题:《剑指offer》中和大数据相关的题目

          本文链接:https://www.haomeiwen.com/subject/vorqxxtx.html