剑30-最小的K个数
来源:互联网 发布:现金赌博软件手机软件 编辑:程序博客网 时间:2024/06/07 18:02
题目描述
输入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>al=new ArrayList<>(); //判断特例 if(k>input.length||k<=0) return al; //开辟新数组存放input前k个值 int[]ints=new int[k]; for(int i=0;i<k;i++) { ints[i]=inputs[i]; } //对有k个值的新数组进行排序,则最大值是ints[k-1] Arrays.sort(ints); //比较最大值ints[k-1]和input数组中剩下的值大小,比最大值小就插入, for(int i=k;i<input.length;i++) { if(input[i]<ints[k-1]) insertInts(ints,input[i]); } //将ints数组添加到新的ArrayList集合中并返回 for(int i=0;i<k;i++) { al.add(ints[i]); } return al; } //插入函数,从最后面进行比较,比较的同时移位,将值插进去,当找到第一个比他小的就查到后面, //实现重排序,保证将m插入到合适位置, public void insertInts(int[]ints,int m) { int i=ints.length-1; for(;i>=0;i--) { if(ints[i]<m) break; if(i==0) { i=-1; break; } ints[i]=ints[i-1];//移位操作 } //直到找到第一个比m小的,break跳出循环,就插到后面 ints[i+1]=m; }}
阅读全文
0 0
- 剑30-最小的K个数
- 30 最小的K个数
- 30-最小的K个数
- 最小的K个数
- 最小的K个数
- 最小的K个数
- 最小的k个数
- 最小的k个数
- 最小的k个数
- 最小的k个数
- 最小的k个数
- 最小的k个数
- 最小的K个数
- 最小的k个数
- 最小的K个数
- 最小的K个数
- 最小的K个数
- 最小的K个数
- iptables防火墙的设置
- xml解析工具类
- 转 设计模式
- 【百度AI人脸核身+公安验证】IOS示例工程运行
- ios 应用打开 图片 文档
- 剑30-最小的K个数
- es6 javascript中的class理解
- Fragment显示问题
- Xshell实现Windows上传文件到Linux主机
- C++异常处理
- 放球问题
- 替换空格问题
- 二分搜索
- 更改MYSQL的ROOT用户的密码