Top k Largest Numbers
Given an integer array, find the top k largest numbers in it.
Example
Given [3,10,1000,-99,4,100] and k = 3.
Return [1000, 100, 10].
 class Solution {
     /*
      * @param nums an integer array
      * @param k an integer
      * @return the top k largest numbers in array
      */
     public int[] topk(int[] nums, int k) {
         if (nums == null || nums.length < k) {
             return null;
         }
         int[] result = new int[k];
         PriorityQueue<Integer> minHeap = new PriorityQueue<>();
         for (int i = 0; i < nums.length; i++) {
             if (minHeap.size() < k) {
                 minHeap.add(nums[i]);
             } else {
                 int temp = minHeap.poll();
                 minHeap.add(Math.max(temp, nums[i]));
             }
         }
         for (int i = k - 1; i >= 0; i--) {
             result[i] = minHeap.poll();
         }
         return result;
     }
 };
Top k Largest Numbers的更多相关文章
- 544. Top k Largest Numbers【medium】
		Given an integer array, find the top k largest numbers in it. Example Given [3,10,1000,-99,4,100] ... 
- [LeetCode] Top K Frequent Elements 前K个高频元素
		Given a non-empty array of integers, return the k most frequent elements. For example,Given [1,1,1,2 ... 
- Top K问题的两种解决思路
		Top K问题在数据分析中非常普遍的一个问题(在面试中也经常被问到),比如: 从20亿个数字的文本中,找出最大的前100个. 解决Top K问题有两种思路, 最直观:小顶堆(大顶堆 -> 最小1 ... 
- C#版(打败99.28%的提交) - Leetcode 347. Top K Frequent Elements - 题解
		版权声明: 本文为博主Bravo Yeung(知乎UserName同名)的原创文章,欲转载请先私信获博主允许,转载时请附上网址 http://blog.csdn.net/lzuacm. C#版 - L ... 
- 排序算法Java版,以及各自的复杂度,以及由堆排序产生的top K问题
		常用的排序算法包括: 冒泡排序:每次在无序队列里将相邻两个数依次进行比较,将小数调换到前面, 逐次比较,直至将最大的数移到最后.最将剩下的N-1个数继续比较,将次大数移至倒数第二.依此规律,直至比较结 ... 
- 堆与堆排序、Top k 问题
		堆排序与快速排序,归并排序一样都是时间复杂度为O(N*logN)的几种常见排序方法.学习堆排序前,先讲解下什么是数据结构中的二叉堆. 二叉堆的定义 二叉堆是完全二叉树或者是近似完全二叉树. 二叉堆满 ... 
- 《程序员代码面试指南》第八章 数组和矩阵问题 打印N 个数组整体最大的Top K
		题目 打印N 个数组整体最大的Top K java代码 package com.lizhouwei.chapter8; /** * @Description: 打印N 个数组整体最大的Top K * ... 
- 华为OJ2051-最小的K个数(Top K问题)
		一.题目描述 描述: 输入n个整数,输出其中最小的k个. 输入: 输入 n 和 k 输入一个整数数组 输出: 输出一个整数数组 样例输入: 5 2 1 3 5 7 2 样例输出: 1 2 二.Top ... 
- [LeetCode] 347. Top K Frequent Elements 前K个高频元素
		Given a non-empty array of integers, return the k most frequent elements. Example 1: Input: nums = [ ... 
随机推荐
- SrpingBoot入门到入坟03-基于idea快速创建SpringBoot应用
			先前先创建Maven项目然后依照官方文档再然后编写主程序写业务逻辑代码才建立好SpringBoot项目,这样太过麻烦,IDE都支持快速创建,下面基于idea: 使用Spring Initializer ... 
- Python print函数详解
			1 """ 2 print(...) 3 print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=Fals ... 
- Centos7.3安装jdk和maven
			安装jdk和maven 通过winscp上传jdk 解压 tar -zxvf jdk-8u91-linux-x64.ta ... 
- 利用Python进行数据分析_Numpy_基础_2
			Numpy数据类型包括: int8.uint8.int16.uint16.int32.uint32.int64.uint64.float16.float32.float64.float128.co ... 
- 使用寄存器点亮LED(第1节)—GPIO功能框图讲解
			GPIO简介 GPIO 是通用输入输出端口的简称,简单来说就是 STM32 可控制的引脚, STM32 芯片的 GPIO 引脚与外部设备连接起来,从而实现与外部通讯.控制以及数据采集的功能.STM32 ... 
- SAS学习笔记32 select语句
- Django 中 app_name (应用命名空间) 和 namespace (实例命名空间) 的区别
			转自:https://www.jianshu.com/p/404500a0408a 补充理解: 先把官网上对应用命名空间(app_name)和实例命名空间(namespace)的解释贴上: app_n ... 
- C# DateTime Subtract
			DateTime start = DateTime.Now.AddDays(-20); DateTime end = DateTime.Now; TimeSpan ts = end.Subtract( ... 
- (十四)Hibernate中的多表操作(4):单向一对一
			案例一: 注解方式实现一对一 UserBean.java package bean; import java.io.Serializable; import javax.persistence.Col ... 
- Junit 学习1 junit的简单使用
			package junit; import java.sql.Connection; import java.sql.SQLException; import org.junit.Test; impo ... 
