输入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个数的更多相关文章
-
九度OJ 1371 最小的K个数 -- 堆排序
题目地址:http://ac.jobdu.com/problem.php?pid=1371 题目描述: 输入n个整数,找出其中最小的K个数.例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4 ...
-
九度OJ 题目1371:最小的K个数
题目描述: 输入n个整数,找出其中最小的K个数.例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,. 输入: 每个测试案例包括2行: 第一行为2个整数n,k(1< ...
-
【剑指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< ...
-
1046: 最小的K个数
1046: 最小的K个数 时间限制: 1 Sec 内存限制: 128 MB提交: 233 解决: 200[提交][状态][讨论版] 题目描述 输入n个整数,找出其中最小的K个数.例如输入4,5,1 ...
-
剑指OFFER之最小的K个数(九度OJ1371)
题目描述: 输入n个整数,找出其中最小的K个数.例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,. 输入: 每个测试案例包括2行: 第一行为2个整数n,k(1< ...
-
九度 1371 最小的K个数
题目描述:输入n个整数,找出其中最小的K个数.例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,. 输入: 每个测试案例包括2行:第一行为2个整数n,k(1<= ...
-
《剑指offer》— JavaScript(29)最小的K个数
最小的K个数 题目描述 输入n个整数,找出其中最小的K个数.例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4. 思路一 使用JavaScript的Array对象的so ...
-
剑指offer-第五章优化时间和空间效率(最小的k个数)
题目:输入n个数,输出最小的k个数. 时间复杂度为O(n) 思路1:我们想的到的最直接的思路就是对这个N个数进行排序,然后就可以找到最小的k个了,同样可以用快排partition.但是只要找到前K个最 ...
-
剑指Offer - 九度1371 - 最小的K个数
剑指Offer - 九度1371 - 最小的K个数2013-11-23 15:45 题目描述: 输入n个整数,找出其中最小的K个数.例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是 ...
随机推荐
-
luogg_java学习_08_设计模式_API
这篇博客总结了1天整,希望自己以后返回来看的时候理解更深刻,也希望可以起到帮助初学者的作用. 转载请注明 出自 : luogg的博客园 , 设计模式 在长期开发过程中,为了解决某些固定问题, 总结出的 ...
-
人工神经网络ANNs
参考: 1. Stanford前向传播神经网络Wiki 2. Stanford后向传播Wiki 3. 神经网络CSDN blog 4. 感知器 5. 线性规划 6. Logistic回归模型 内容: ...
-
nginx设置反向代理后,页面上的js css文件无法加载
问题现象: nginx配置反向代理后,网页可以正常访问,但是页面上的js css文件无法加载,页面样式乱了. (1)nginx配置如下: (2)域名访问:js css文件无法加载: (3)IP访问:j ...
-
在应用程序中实现对NandFlash的操作
以TC58NVG2S3ETA00 为例: 下面是它的一些物理参数: 图一 图二 图三 图四 图五 图6-0 图6-1 说明一下,在图6-1中中间的那个布局表可以看做是实际的NandFlash一页数据的 ...
-
如何把百度统计代码放入JS文件中?百度统计的JS脚本原理分析
<script> var _hmt = _hmt || []; (function() { var hm = document.createElement("script&quo ...
-
C#:TextBox数据绑定
经常写用一个TextBox显示某个对象,然后编辑之后再保存的程序.以前都是在TextBox_TextChanged事件中修改对象的值,或者保存的时候再读取TextBox.Text属性保存对象的值.这样 ...
-
Js 动态添加的数据,监听事件监听不到
在开发中遇到这种问题,就是有些数据,比如按钮是动态添加进去的,结果添加事件监听无效,直接写死在页面上是可以的. 这就是很明显的加载先后顺序的问题了. 解决的方法: $(document).ready( ...
-
API接口设计:防参数篡改+防二次请求
API接口由于需要供第三方服务调用,所以必须暴露到外网,并提供了具体请求地址和请求参数 为了防止被第别有用心之人获取到真实请求参数后再次发起请求获取信息,需要采取很多安全机制 1.首先: 需要采用ht ...
-
CSS图标文字不对齐
页面排版经常遇到‘图标+文字’的需求,正常样式写下来是这样 , 但产品要的应该是长这样 ,怎么办呢?其实很简单,加个样式看看 vertical-align: top/middle/bottom; ...
-
记一次诡异的bug
使用django做项目,在视图函数中需要查询,查询前构造一个查询参数的模型来过滤参数防止报错,然后调用模型的方法返回一个字典,包括了所有查询的字段和值,发现只要查询过一次之后,后续的访问查询结果会在之 ...