【剑指offer】之最小的k个数
来源:互联网 发布:淘宝便宜的店铺 编辑:程序博客网 时间:2024/04/29 13:16
输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4。
分析:
java代码实现:
//求出最小的k个值(时间复杂度o(n))private static void getLeastNumbers(int []nums, int k) {int []obs = new int[nums.length]; //这样就不会改变nums里面的值的位置。for(int i=0;i<nums.length;i++) {obs[i] = nums[i];}if(obs.length < 0 || k<=0)return ;int start = 0;int end = obs.length - 1;int index = Partition(obs,start,end);while(index != k-1) {if(index > k-1) {end = index -1;index = Partition(obs,start,end);}else {start = index + 1;index = Partition(obs,start,end);}}//输出索要的k个值for(int i=0;i<k;i++) {System.out.print(obs[i]+",");}}private static int Partition(int []obs, int start ,int end) {int j = 0;if(start < end) {int i = start ;j = end + 1;//int temp = obs[start];while (true) {while (obs[start] > obs[++i] && i < end);while (obs[start] < obs[--j] && j > start);if (i < j) {swap(obs, i, j);} else {break;}}swap(obs,start,j);}return j;}private static void swap(int[] obs, int i, int j) {int swap = obs[i];obs[i] = obs[j];obs[j] = swap;}
0 0
- 剑指Offer之 - 最小的k个数
- 剑指offer之最小的k个数
- 【剑指offer】之最小的k个数
- 剑指offer之最小的K个数
- 剑指offer系列之二十八:最小的k个数
- 码农小汪-剑指Offer之27 -最小的K个数
- 剑指offer系列之28:最小的k个数
- 剑指offer(二十三)之最小的K个数
- 剑指offer之面试题30:最小的k个数
- 剑指offer之面试题30最小的k个数
- [剑指offer学习心得]之:最小的k个数
- 剑指Offer之面试题30:最小的K个数
- (二十二)剑指offer之最小的k个数
- 剑指offer之二十三---最小的K个数
- 剑指offer之最小的K个数(Python)
- 剑指offer:最小的k个数
- 【剑指offer】最小的k个数
- 剑指offer-30:最小的k个数
- html表格边框的设置
- eclipse 和 android studio 快捷键对比
- oracle数据泵EXPDP和IMPDP使用说明
- java读取二进制文件
- Ubuntu 常用软件安装
- 【剑指offer】之最小的k个数
- zhphpframework (十三) smarty模板配置层
- 下面是8个可用ORM的总体介绍
- VS2013的Release模式下进行调试
- linux安装lzop命令
- 年末重磅 | 12月Unity 2D新功能发布会现已开放报名!
- Android GridView 指定行数,动态行宽,占满空间
- Hadoop 2.7.1 集群模式安装【三】环境配置实战
- 如何在 CentOS 7 上安装 Redis 服务器