最小的K个数

来源:互联网 发布:su建模软件 编辑:程序博客网 时间:2024/06/05 18:51

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

思路:建立一个大小为K的数组,然后遍历这N个整数,当前数组元素个数小于k,直接加入,如果当前元素大于K,比较当前数和数组中的最大的数,保留小的舍弃大的。

import java.util.*;public class Solution {    public ArrayList<Integer> GetLeastNumbers_Solution(int[] input, int k) {        ArrayList<Integer> list = new ArrayList();        //判断空输入        if(input == null || k > input.length)            return list;        int count = 0;        int max = Integer.MIN_VALUE;    //当前最大数字        for(int i = 0; i < input.length ; i++){            //如果数组没满            if(count < k){                list.add(input[i]);                count++;            }else if(count == k){                //如果数组满了,找出最大的一个和当前数字相比较                max = getMax(list);                if(max > input[i]){                    //如果当前数字比较小,替换那个大的                    removeNumber(list,max);                    list.add(input[i]);                    max = getMax(list);                }            }        }        return list;    }    public int getMax(ArrayList<Integer> list){        int max = Integer.MIN_VALUE;        for(Integer temp : list){            if(temp > max)                max = temp;        }        return max;    }    public void removeNumber(ArrayList<Integer> list,int number){        Iterator<Integer> iterator = list.iterator();        while(iterator.hasNext()){            if(number == iterator.next()){                iterator.remove();                break;            }        }    }}
原创粉丝点击