记录一下自己实现topN问题
题目源自剑指offer(题号:JZ29):https://www.nowcoder.com/practice/6a296eb82cf844ca8539b57c23e6e9bf?tpId=13&&tqId=11182&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking
题目:
input:int[] arr , int k
return: ArrayList
思路:
TopN算法本质还是要结合排序来进行操作。
- 举个例子。第一种做法:参考冒泡排序,每次把最小的往后挪。复杂度:O(kn)
- 使用堆排序。复杂度分析:O(nlogn + klogn)
代码实现(我是自己为了练习,就没有调库,自己用数组实现的一个小顶堆。代码可能有点粗糙,不够优雅)
import java.util.ArrayList;
public class again {
public static void main(String[] args){
int[] arr = {
4,5,1,0,2,7,3,8};
ArrayList<Integer> array = GetLeastNumbers_Solution(arr , 5);
System.out.println(array.toString());
}
public static ArrayList<Integer> GetLeastNumbers_Solution(int

这篇博客记录了作者实现TopN问题的过程,来源于剑指offer的JZ29题。作者通过举例说明了TopN算法的核心是排序,并提供了两种方法:冒泡排序(O(kn))和堆排序(O(nlogn + klogn))。文中给出了自己使用数组实现的小顶堆代码,同时提到了题库中可能存在的陷阱,即k可能大于数组长度。最后,作者建议根据实际情况选择合适的算法。
最低0.47元/天 解锁文章
1519

被折叠的 条评论
为什么被折叠?



