找出一堆数中最小的前K个数
描写叙述:
给定一个整数数组。让你从该数组中找出最小的K个数
思路:
最简洁粗暴的方法就是将该数组进行排序,然后取最前面的K个数就可以。
可是,本题要求的仅仅是求出最小的k个数就可以,用排序能够但显然有点浪费。比方让求10000个整数数组中的最小的10个数。用排序的话平均时间复杂度差为Nlog(N)。
于是想到了,用堆来实现,可是自己实现又太麻烦。想到了java里面的TreeSet,先将K个数放入TreeSet中。因为TreeSet会对里面的元素进行排序。所以在TreeSet中的元素是有序的。以后没插入一个元素,将TreeSet中的最大元素删除就可以,所以TreeSet动态维持K个元素且这K个元素是有序的。
代码:
import java.util.TreeSet;public class FirstKElements
{public static TreeSet<Integer>getFirstKElements(int arr[],int k){TreeSet<Integer>set=new TreeSet<Integer>();int len=arr.length;k=k%len;int i=0;int num=0;for(i=0;i<k;i++)set.add(arr[i]);for(i=k;i<len;i++){set.add(arr[i]);num=set.last();set.remove(num);}return set;}public static void main(String[] args){// TODO Auto-generated method stubint arr[]={9,7,5,4,2,1,3,6,8};System.out.println(FirstKElements.getFirstKElements(arr, 4));}}
结果:
找出一堆数中最小的前K个数相关推荐
- 0206.BFPRT在一大堆数中求其前k大或前k小的问题,简称TOP-K问题(左神算法基础班源码)
package basic_class_02;/*** * 在一大堆数中求其前k大或前k小的问题,简称TOP-K问题.* 而目前解决TOP-K问题最有效的算法即是BFPRT算法**/ public c ...
- 找出无序数组中最小的k个数(top k问题)
2019独角兽企业重金招聘Python工程师标准>>> 给定一个无序的整型数组arr,找到其中最小的k个数 该题是互联网面试中十分高频的一道题,如果用普通的排序算法,排序之后自然可以 ...
- LeetCode 1198. 找出所有行中最小公共元素(二分/合并有序链表)
文章目录 1. 题目 2. 解题 2.1 按列遍历 2.2 二分查找 2.3 合并k个有序链表 1. 题目 给你一个矩阵 mat,其中每一行的元素都已经按 递增 顺序排好了. 请你帮忙找出在所有这些行 ...
- c语言:找出4数中最大值最小值
n1.n2.n3.n4是一组需要找出最大最小值的整数 #include <stdio.h>int main() {int n1, n2, n3, n4, max1, max2, min1, ...
- 异或运算练习:找出一组数中唯一(唯二)出现奇数次的数
题目描述 已知一个数组,现在请你用时间复杂度O(n),空间复杂度O(1)的算法求解: 1.假设数组中只有一个数的数量为奇数,其余都是偶数,请求出这个数. 2.假设数组中有两个数的数量为奇数,其余都是偶 ...
- topK问题——N个数中取最大的K个数
topK问题 在海量数据中找出出现频率最高的前k个数,或者从海量数据中找出最大的前k个数,这类问题通常被称为topK问题. N个数中取最大的K个数,用小根堆:N个数中取最小的K个数,用大根堆:时间复杂 ...
- 找出一个字符串中出现次数最多的字_海量数据中找出前k大数(topk问题)
在海量数据中找出出现频率最好的前k个数,或者从海量数据中找出最大的前k个数,这类问题通常被称为top K问题. 针对top K类问题,通常比较好的方案是分治+Trie树/hash+小顶堆(就是上面提到 ...
- C++100w个数中找出最大的前K个数
/*100w个数中找出最大的前K个数*/ #include <iostream> using namespace std; #include <assert.h> const ...
- 找出如下数组中最大的元素和最小的元素, a[][]={{3,2,6},{6,8,2,10},{5},{12,3,23}}
package com.homework.zw; //解题思路:先遍历二维数组的所有元素,用这些元素组成新的一维数组.然后利用冒泡排序找出一维数组的最大元素和最小元素. public class wo ...
最新文章
- LeetCode: 103. Binary Tree Zigzag Level Order Traversal
- HDU4279(2012年天津网络赛---数论分析题)
- 2015年10月15日项目经理中项作业(质量管理与人力资源管理)
- MHA manage节点安装报错解决
- python文本文件csv_我的第一个Python项目:如何将杂乱无章的文本文件转换为纯净的CSV文件
- 基于lucene语法的实时文本搜索与匹配--Tripod
- php json对象转为字符串,JSON对象转化为字符串(附上代码详细解答)
- 你的伙伴对你最大会话_TeamViewer许可证对您与伙伴的最大会话有所限制解决办法...
- android 视频通话框架,Android基于腾讯云实时音视频仿微信视频通话最小化悬浮
- Unity3D 学习笔记6 ——协程
- 大数据HBase(四):HBase的相关操作-客户端命令式
- 中资电信银行股将成市场旗手
- 太多人问Protobuf的问题了,我只好把这个重新搬出来!
- 分析黑客入侵 PostgreSQL 数据库
- MySQL表关联关系
- hive 窗口函数--常用函数介绍
- 服务器uefi装系统教程,uefi模式怎么重装系统_win10uefi装系统步骤教程
- Python怎么买入卖出
- 上海海事大学计算机考研资料汇总
- 从领先行业到定义标准 小鱼易连全线新品发布让云视频真正进化