剑指offer系列55---最小的k个数
Posted noaman_wgs
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了剑指offer系列55---最小的k个数相关的知识,希望对你有一定的参考价值。
【题目】 输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。
*【思路】排序,去除k后的数。
1 package com.exe11.offer; 2 import java.util.ArrayList; 3 import java.util.Collections; 4 /** 5 *【题目】 输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。 6 *【思路】排序,去除k后的数。 7 * @author WGS 8 * 9 */ 10 public class GetLeastKNumbers { 11 public ArrayList<Integer> getLeastKNumber(int[] nums,int K){ 12 ArrayList<Integer> list=new ArrayList<>(); 13 if(nums==null ||nums.length<=0 || 14 K<1 || K>nums.length) 15 return list; 16 17 for(int i=0;i<nums.length;i++){ 18 list.add(nums[i]); 19 } 20 //2 排序 21 Collections.sort(list); 22 //3 去除K后数 23 while(list.size()>K){ 24 list.remove(K);//一直删除第K个位置的数,直至list大小>K 25 } 26 return list; 27 28 } 29 30 public static void main(String[] args) { 31 GetLeastKNumbers g=new GetLeastKNumbers(); 32 int[] nums=new int[]{4,5,1,6,2,7,3,8}; 33 ArrayList<Integer> list=g.getLeastKNumber(nums, 4); 34 for (Integer integer : list) { 35 System.out.println(integer); 36 } 37 } 38 }
以上是关于剑指offer系列55---最小的k个数的主要内容,如果未能解决你的问题,请参考以下文章
剑指 Offer 45. 把数组排成最小的数 剑指 Offer 61. 扑克牌中的顺子 剑指 Offer 40. 最小的k个数