输入n个整数,输出其中最小的k个。

详细描述:

接口说明

原型:

bool GetMinK(unsignedint uiInputNum, int *pInputArray, unsignedint uiK, int * pOutputArray);

输入参数:

unsignedint uiInputNum //输入整数个数

int * pInputArray  //输入整数数组

unsignedint uiK   //需输出uiK个整数

输出参数(指针指向的内存区域保证有效):

int * pOutputArray //最小的uiK个整数

练习阶段:  初级

运行时间限制: 10Sec

内存限制: 128MByte

输入:

输入说明

1 输入两个整数

2 输入一个整数数组

输出:

输出一个整数数组

样例输入: 5 2

1 3 5 7 2

样例输出: 1 2

分值:100分

代码如下:

 import java.util.Scanner;

 /**
* 输入n个整数,输出k个最小的
* @author keli
*
*/
public class GetKSmaller { public static void main(String[] args) {
//输入
Scanner cin = new Scanner(System.in) ;
int n = cin.nextInt() ;
int k = cin.nextInt() ;
int [] arr = new int[n] ;
for(int i = 0 ; i < n ; i++){
arr[i] = cin.nextInt() ;
}
cin.close();
//简单的错误判断
if(k > n){
System.out.println("error");
}
//获取结果
int [] res = new int[k] ;
getMinK(n,arr,k,res) ;
//输出
for(int i = 0 ; i < k-1 ; i++){
System.out.print(res[i]+" ") ;
}
System.out.println(res[k-1]);
} /**
* 找出最小的K个数,并按大小存储到res数组中
* @param n
* @param arr
* @param k
* @param res
*/
private static void getMinK(int n, int[] arr, int k, int [] res) {
//为了不改变原先的数据,所以将源数据复制过来
int [] newArr = new int[n] ;
for(int i = 0 ; i < n ; i ++){
newArr[i] = arr[i] ;
} //简单排序算法,对数据进行排序
int temp ;
int index ;
for(int i = 0 ; i < k ; i ++){
temp = newArr[i] ;
index = i ;
for(int j = i+1 ; j < n ; j++){
if(temp > newArr[j]){
temp = newArr[j] ;
index = j ;
}
}
if(index != i){
newArr[index] = newArr[i] ;
newArr[i] = temp ;
}
//将相应的数据存放到res数组中
res[i] = newArr[i] ;
}
} }

Code

其中非常值得注意的是华为的OJ平台的输出要求非常变态和死板,这种类型的输出只能是一个数后加一个空格(不能用Tab),然后最后一个数之后不能空格

华为OJ平台——输出最小的k个数的更多相关文章

  1. 九度OJ 1371 最小的K个数 -- 堆排序

    题目地址:http://ac.jobdu.com/problem.php?pid=1371 题目描述: 输入n个整数,找出其中最小的K个数.例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4 ...

  2. 九度OJ 题目1371:最小的K个数

    题目描述: 输入n个整数,找出其中最小的K个数.例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,. 输入: 每个测试案例包括2行: 第一行为2个整数n,k(1< ...

  3. 【剑指Offer面试编程题】题目1371:最小的K个数--九度OJ

    题目描述: 输入n个整数,找出其中最小的K个数.例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,. 输入: 每个测试案例包括2行: 第一行为2个整数n,k(1< ...

  4. 1046: 最小的K个数

    1046: 最小的K个数 时间限制: 1 Sec  内存限制: 128 MB提交: 233  解决: 200[提交][状态][讨论版] 题目描述 输入n个整数,找出其中最小的K个数.例如输入4,5,1 ...

  5. 剑指OFFER之最小的K个数(九度OJ1371)

    题目描述: 输入n个整数,找出其中最小的K个数.例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,. 输入: 每个测试案例包括2行: 第一行为2个整数n,k(1< ...

  6. 九度 1371 最小的K个数

    题目描述:输入n个整数,找出其中最小的K个数.例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,. 输入: 每个测试案例包括2行:第一行为2个整数n,k(1<= ...

  7. 《剑指offer》— JavaScript(29)最小的K个数

    最小的K个数 题目描述 输入n个整数,找出其中最小的K个数.例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4. 思路一 使用JavaScript的Array对象的so ...

  8. 剑指offer-第五章优化时间和空间效率(最小的k个数)

    题目:输入n个数,输出最小的k个数. 时间复杂度为O(n) 思路1:我们想的到的最直接的思路就是对这个N个数进行排序,然后就可以找到最小的k个了,同样可以用快排partition.但是只要找到前K个最 ...

  9. 剑指Offer - 九度1371 - 最小的K个数

    剑指Offer - 九度1371 - 最小的K个数2013-11-23 15:45 题目描述: 输入n个整数,找出其中最小的K个数.例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是 ...

随机推荐

  1. 使用eclipse编译调试c++

    1. 安装JDK 到官网下载最新的jdk版本,并安装 http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-18 ...

  2. Spark 1.4连接mysql诡异的问题及解决

    在spark-default.conf文件中明明配置了mysql的数据源连接 随后启动spark-shell 执行如下测试代码: import org.apache.spark.{SparkConte ...

  3. MST_prim

    刚刚发了mst 的kruskal,现在再来一发,说一说prim咯. prim适用于稠密图. 与kruskal不同,prim是从一个点开始,不断加入新的点直至连通所有点. 讲讲prim的过程,我们假定有 ...

  4. NeHe OpenGL教程 第四十课:绳子的模拟

    转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...

  5. RN项目搭建

    一.安装JDK 由安装包引起,你可以尝试一下新包 注意安装路径要不同 或者重新安装Windows Installer 运行CMD 1.输入 sfc /SCANNOW 回车 2.完成后输入 msiexe ...

  6. HTML5表单与PHP交互

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  7. StringIO 模块用于在内存缓冲区中读写数据

    模块是用类编写的,只有一个StringIO类,所以它的可用方法都在类中.此类中的大部分函数都与对文件的操作方法类似. 例: #coding=gbk import StringIO s=StringIO ...

  8. Linux磁盘系统基础知识(转载)

    From:http://www.liusuping.com/ubuntu-linux/linux-disk-basic.html 在Linux系统下对于IDE硬盘,每块盘有一个设备名:对应于主板的四个 ...

  9. ASPxGridView改变列颜色

    protected void ASPxGridView1_HtmlDataCellPrepared(object sender, ASPxGridViewTableDataCellEventArgs ...

  10. Oracle中常用操作

    查看表中的字段名和类型 SELECT column_name,DATA_TYPE FROM cols WHERE TABLE_NAME=upper('tableName') ORDER BY COLU ...