双向链表java实现 一道java面试题,20亿数字的文本排序,如何取前100?
浏览量:1930
时间:2021-03-11 11:26:19
作者:admin
一道java面试题,20亿数字的文本排序,如何取前100?
因为这是一个Java问题,所以这是典型的TOPK问题。首先取前100个数字构建一个最小堆,然后依次从堆的顶部插入剩余的数字,同时调整堆。堆中最后100个元素就是结果。空间复杂度为k,时间复杂度为nlogk
假设链表的节点定义如下:类节点{int inode next},则其反转函数为void reverse(node L){if(L==null)returnnode P=null,q=L,r=L.nextwhile(r!=null){q.next=PP=QQ=RR=r.next}q.next=PL=q}
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。