题目描述

输入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 输入一个整数数组

输出描述:

输出一个整数数组

示例1

输入

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)的更多相关文章

  1. SCNU ACM 2016新生赛决赛 解题报告

    新生初赛题目.解题思路.参考代码一览 A. 拒绝虐狗 Problem Description CZJ 去排队打饭的时候看到前面有几对情侣秀恩爱,作为单身狗的 CZJ 表示很难受. 现在给出一个字符串代 ...

  2. SCNU ACM 2016新生赛初赛 解题报告

    新生初赛题目.解题思路.参考代码一览 1001. 无聊的日常 Problem Description 两位小朋友小A和小B无聊时玩了个游戏,在限定时间内说出一排数字,那边说出的数大就赢,你的工作是帮他 ...

  3. HDU 3791二叉搜索树解题(解题报告)

    1.题目地址: http://acm.hdu.edu.cn/showproblem.php?pid=3791 2.参考解题 http://blog.csdn.net/u013447865/articl ...

  4. 【BZOJ1700】[Usaco2007 Jan]Problem Solving 解题 动态规划

    [BZOJ1700][Usaco2007 Jan]Problem Solving 解题 Description 过去的日子里,农夫John的牛没有任何题目. 可是现在他们有题目,有很多的题目. 精确地 ...

  5. CH Round #56 - 国庆节欢乐赛解题报告

    最近CH上的比赛很多,在此会全部写出解题报告,与大家交流一下解题方法与技巧. T1 魔幻森林 描述 Cortana来到了一片魔幻森林,这片森林可以被视作一个N*M的矩阵,矩阵中的每个位置上都长着一棵树 ...

  6. wechall.net/stegano 解题心得

    /* 转载请注明出处:http://www.cnblogs.com/Martinium/p/wechall_stegano.html */ 最近迷上了 www.wechall.net 网站,里面都是些 ...

  7. Mountains(CVTE面试题)解题报告

    题目大意: 用一个数组代表群山的高度.高度大的地方代表山峰,小的地方代表山谷.山谷可以容水.假设有一天下了大雨,求群山中总共可以容纳多少水? 如图所示情况,a代表该数组,总共可以容纳5个水. 解题思路 ...

  8. timus 1180. Stone Game 解题报告

    1.题目: 1180. Stone Game Time limit: 1.0 secondMemory limit: 64 MB Two Nikifors play a funny game. The ...

  9. timus 1175. Strange Sequence 解题报告

    1.题目描述: 1175. Strange Sequence Time limit: 1.0 secondMemory limit: 2 MB You have been asked to disco ...

随机推荐

  1. Xcode清除缓存,清除多余证书

    http://blog.csdn.net/IDOshi201109/article/details/46634541

  2. 35.在CSS中 只用一个 DOM 元素就能画出国宝熊猫

    原文地址:https://segmentfault.com/a/1190000015052653 感想: 真神奇! HTML code: <div class="panda" ...

  3. python中 将你的名字转化成为二进制并输出

    1 name = "吴彦祖" 2 for i in name: 3 i_by = bytes(i, encoding = "utf-8") 4 for i_bi ...

  4. hive表命名规范 源码规则

    tablename 进来前已经把"`","."等过滤掉了,所以就是单词字符喽 \w搞定 \w包含_ 哈哈 规范就是 a-z A-Z 0-9 _ 也就是传说中的单 ...

  5. Android Camera2的使用

    参考:https://developer.android.com/reference/android/hardware/camera2/package-summary.html camera2提供了一 ...

  6. Redis命令操作详解

    一.key pattern 查询相应的key (1)redis允许模糊查询key 有3个通配符  *.?.[] (2)randomkey:返回随机key (3)type key:返回key存储的类型 ...

  7. Lua的特点

    特点: Lua是一个脚本语言.是目前速度最快的脚本语言.它能与C/C++代码互相调用. Lua脚本是跨平台的,是要使用Lua基本语法和标准库写的脚本,都是可以跨平台的(用了扩展库则不一定). Lua源 ...

  8. jq时间戳动画

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  9. 爬虫--Scrapy-基于RedisSpider实现的分布式爬虫

    爬取网易新闻 需求:爬取的是基于文字的新闻数据(国内,国际,军事,航空) 先编写基于scrapycrawl 先创建工程 scrapy startproject 58Pro cd 58Pro 新建一个爬 ...

  10. babel 基本

    babel的大概知识点 . babel常用的转译器是babel-preset-env. 常用的配置选项是plugins和presets 常用的使用场景是在webpack中 https://www.cn ...