求取一个数组最大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)。

求取一个数组最大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)。-笔试面试资料

提供最优质的资源集合

立即查看 了解详情