解题6(OutputNMin)
题目描述
输入n个整数,输出其中最小的k个。
详细描述:
接口说明
原型:
bool GetMinK(unsignedint uiInputNum, int * pInputArray, unsignedint uiK, int * pOutputArray);
输入参数:
unsignedint uiInputNum //输入整数个数
int * pInputArray //输入整数数组
unsignedint uiK //需输出uiK个整数
输出参数(指针指向的内存区域保证有效):
int * pOutputArray //最小的uiK个整数
返回值:
false 异常失败
true 输出成功
输入描述:
输入说明
1 输入两个整数
2 输入一个整数数组
输出描述:
输出一个整数数组
输入
5 2
1 3 5 7 2
输出
1 2
代码如下:
package com.yzh.hehe; import java.util.Scanner; public class OutputNMin {
/*
* 先以o(n)时间建一个堆,再依次删除k个堆顶值
*
* */
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
while ( scanner.hasNext()) {
int size=scanner.nextInt();
int k=scanner.nextInt();
int[]arr=new int[size+1];
int temp;
for (int i = 1; i <= size; i++) {
temp=scanner.nextInt();
insertHeap(arr, temp,i);
}
for (int i = 0; i < k; i++) {
deleteHeapMain(arr, size-i);
}
int p=size-k+1;
for (int i =size ; i >p; i--) {
System.out.print(arr[i]);
System.out.println(" ");
}
System.out.print(arr[p]);
}
scanner.close(); }
//建堆 执行n次建堆操作O(n)
private static void insertHeap(int[] arr,int value,int p) {
int i;
for ( i = p; i>1&&arr[i/2]>value; i=i/2) {
arr[i]=arr[i/2];
}
arr[i]=value;
}
//删除堆顶值(最小值)
private static void deleteHeapMain(int[]arr,int length) {
int reV=arr[1];//删除第一个值
int lastV=arr[length];
int i,child;
//2*i <=length保证空格还没下沉到最底层
for (i = 1; 2*i <=length ;i=child ) {
child=2*i;
if(child!=length&&(arr[2*i]>arr[2*i+1])){
child++; //判断走左还是走右
}
//判断是否能将最后一个值插入到目前的空格
if(lastV>arr[child]){
arr[i]=arr[child];
}else{
break;
}
}
arr[i]=lastV; //插入最后一个值
arr[length]= reV;//用来存储删除的第一个值
}
}
解题6(OutputNMin)的更多相关文章
- SCNU ACM 2016新生赛决赛 解题报告
新生初赛题目.解题思路.参考代码一览 A. 拒绝虐狗 Problem Description CZJ 去排队打饭的时候看到前面有几对情侣秀恩爱,作为单身狗的 CZJ 表示很难受. 现在给出一个字符串代 ...
- SCNU ACM 2016新生赛初赛 解题报告
新生初赛题目.解题思路.参考代码一览 1001. 无聊的日常 Problem Description 两位小朋友小A和小B无聊时玩了个游戏,在限定时间内说出一排数字,那边说出的数大就赢,你的工作是帮他 ...
- HDU 3791二叉搜索树解题(解题报告)
1.题目地址: http://acm.hdu.edu.cn/showproblem.php?pid=3791 2.参考解题 http://blog.csdn.net/u013447865/articl ...
- 【BZOJ1700】[Usaco2007 Jan]Problem Solving 解题 动态规划
[BZOJ1700][Usaco2007 Jan]Problem Solving 解题 Description 过去的日子里,农夫John的牛没有任何题目. 可是现在他们有题目,有很多的题目. 精确地 ...
- CH Round #56 - 国庆节欢乐赛解题报告
最近CH上的比赛很多,在此会全部写出解题报告,与大家交流一下解题方法与技巧. T1 魔幻森林 描述 Cortana来到了一片魔幻森林,这片森林可以被视作一个N*M的矩阵,矩阵中的每个位置上都长着一棵树 ...
- wechall.net/stegano 解题心得
/* 转载请注明出处:http://www.cnblogs.com/Martinium/p/wechall_stegano.html */ 最近迷上了 www.wechall.net 网站,里面都是些 ...
- Mountains(CVTE面试题)解题报告
题目大意: 用一个数组代表群山的高度.高度大的地方代表山峰,小的地方代表山谷.山谷可以容水.假设有一天下了大雨,求群山中总共可以容纳多少水? 如图所示情况,a代表该数组,总共可以容纳5个水. 解题思路 ...
- timus 1180. Stone Game 解题报告
1.题目: 1180. Stone Game Time limit: 1.0 secondMemory limit: 64 MB Two Nikifors play a funny game. The ...
- timus 1175. Strange Sequence 解题报告
1.题目描述: 1175. Strange Sequence Time limit: 1.0 secondMemory limit: 2 MB You have been asked to disco ...
随机推荐
- 循环内部嵌套ajax请求
循环内部ajax请求涉及到循环变量的取值问题: 例如: for(var i=0; i<items.length; i++){ zzurl = items[i].url; $.ajax({ typ ...
- 浮动ip cz
- JAVA获取文件夹下所有的文件
package com.test; import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; im ...
- 关于thinkphp3.1无法加载模块解决办法
关于thinkphp3.1无法加载模块解决办法 如果没有具体的哪个模块的名字 请注意PHP的版本问题
- HTTP 416
真是活久见, 竟然遇到了HTTP 416 参照 http://baike.baidu.com/view/1790469.htm , Requested Range Not Satisfiable 如果 ...
- uiautomator:Error while obtaining UI hierarchy XML file: com.android.ddmlib.SyncException: Remote object doesn't exist!
尝试用android sdk的uiautomatorviewer抓元素的时候报错:Error while obtaining UI hierarchy XML file: com.android.dd ...
- 浅拷贝和深拷贝(java)
拷贝:多用于prototype原型模式的复制. 数据库连接池,将properties中的jdbc信息(user/password/url/port)等获取后赋值给jdbcData对象,然后将对象复制n ...
- 2018SDIBT_国庆个人第三场
A - A CodeForces - 1042A There are nn benches in the Berland Central park. It is known that aiai peo ...
- U3D 贴图通道分离后为什么能减小体积
原理上,分离与否,不会减小图片原始体积,还可能增大了. RGBA32 分离后 = RGB24 + A8,这种情况下大小没变 但压缩后就不一样了,因为RGBA32整张图的压缩过程中,每个像素是否可以压缩 ...
- vscode-nextgenas编译配置
文档:https://github.com/BowlerHatLLC/vscode-nextgenas/wiki/asconfig.json asconfig.json { "config& ...