package suanfa.array;

import java.util.*;

/**

  • 获取最小的k个数字

  • /
    public class GetLeastNumbers {

    public static void main(String[] args) {

      int[] nums = new int[]{3, 2, 1};
      List<Integer> result = getLeastNumbersBySort(nums, 2);

    }

    /**

    • 通过堆实现

    • @param nums

    • @param k

    • @return

    • /
      public static List<integer> getLeastNumbers(int[] nums, int k) {</integer>

      PriorityQueue<integer> queue = new PriorityQueue<>(new Comparator<integer>() {</integer></integer>

        @Override
        public int compare(Integer o1, Integer o2) {
            return o2 - o1;
        }

      });

      for (int num : nums) {

        if (queue.size() < k) {
            queue.offer(num);
        } else {
            if (queue.peek() > num) {
                queue.poll();
                queue.offer(num);
            }
        }

      }

      List<integer> list = new ArrayList<>();</integer>

      while (queue.size() > 0) {

        list.add(queue.poll());

      }
      return list;
      }

      /**

    • 对数组升序排序

    • @param nums

    • @param k

    • @return

    • /
      public static List<integer> getLeastNumbersBySort(int[] nums, int k) {</integer>

      Arrays.sort(nums);
      List<integer> result = new ArrayList<>();</integer>

      for (int i = 0; i < k; i++) {

        result.add(nums[i]);

      }
      return result;
      }
      }