求取一个数组最大K个数,返回k个数可以为任意排序,假设数组元素有N个,要求算法时间复杂度不大于O(N*log(K)),空间复杂度为O(1)。-笔试面试资料
这是qklbishe.com第6531 篇笔试面试资料
提供答案分析,通过本文《求取一个数组最大K个数,返回k个数可以为任意排序,假设数组元素有N个,要求算法时间复杂度不大于O(N*log(K)),空间复杂度为O(1)。-笔试面试资料》可以理解其中的代码原理,这是一篇很好的求职学习资料
本站提供程序员计算机面试经验学习,笔试经验,包括字节跳动/头条,腾讯,阿里,美团,滴滴出行,网易,百度,京东,小米,华为,微软等互联网大厂真题学习背诵。
答案:
求取一个数组最大K个数,返回k个数可以为任意排序,假设数组元素有N个,要求算法时间复杂度不大于O(N*log(K)),空间复杂度为O(1)。
无视复杂度的要求,直接利用插入排序或堆排序的思想求解topk😂
import java.util.Arrays; import java.util.Comparator; public class Solution { /** * * @param li int整型一维数组 * @param k int整型 * @return int整型一维数组 */ public int[] top_k (int[] li, int k) { // write code here int n = li.length; // 用插入排序的思想 int[] temp = Arrays.copyOfRange(li, 0, k); Arrays.sort(temp); reverse(temp); for(int i = k; i < n; i++){ if(li[i] > temp[temp.length - 1]) temp[temp.length - 1] = li[i]; Arrays.sort(temp); reverse(temp); } return temp; } private static void reverse(int[] arr) { for(int i = 0; i < arr.length / 2; i++){ int temp = arr[i]; arr[i] = arr[arr.length - 1 - i]; arr[arr.length - 1 - i] = temp; } } }
今天 10:35:13 回复(0)
文章部分来自互联网,侵权联系删除
www.qklbishe.com
区块链毕设网(www.qklbishe.com)全网最靠谱的原创区块链毕设代做网站部分资料来自网络,侵权联系删除!资源收费仅为搬运整理打赏费用,用户自愿支付 !
qklbishe.com区块链毕设代做网专注|以太坊fabric-计算机|java|毕业设计|代做平台 » 求取一个数组最大K个数,返回k个数可以为任意排序,假设数组元素有N个,要求算法时间复杂度不大于O(N*log(K)),空间复杂度为O(1)。-笔试面试资料
qklbishe.com区块链毕设代做网专注|以太坊fabric-计算机|java|毕业设计|代做平台 » 求取一个数组最大K个数,返回k个数可以为任意排序,假设数组元素有N个,要求算法时间复杂度不大于O(N*log(K)),空间复杂度为O(1)。-笔试面试资料