一道java面试题,20亿数字的文本排序,如何取前100?
因为这是一个java问题,所以这是典型的topk问题。首先取前100个数字构建一个最小堆,然后依次从堆的顶部插入剩余的数字,同时调整堆。堆中最后100个元素就是结果。空间复杂度为k,时间复杂度为nlogk
两个月相当充裕。
这两个月大致分为八周(56天)
第一周和第二周:
学习基础知识的主要方法是看java编程思想,用java实现各种数据结构,多做些事情,敲出每个知识点。
第三,四周:
关于项目,做一些简单的java项目,了解ssh框架。一两个星期就够了。
第5周:
学习java的高级功能很困难,但实际情况并不多。如果你不明白,就看大牛的科技博客吧。
第6周:
阅读《深入了解java虚拟机》一书,了解java的运行机制。
第7、8周:
阅读和编写优秀项目的源代码,阅读github上的代码,并了解一些常见java类的实现。
原文标题:java字符串排列组合算法 一道java面试题,20亿数字的文本排序,如何取前100?,如若转载,请注明出处:https://www.saibowen.com/wenda/24489.html
免责声明:此资讯系转载自合作媒体或互联网其它网站,「赛伯温」登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述,文章内容仅供参考。