java字符串排列组合算法 一道java面试题,20亿数字的文本排序,如何取前100?

一道java面试题,20亿数字的文本排序,如何取前100?因为这是一个Java问题,所以这是典型的TOPK问题。首先取前100个数字构建一个最小堆,然后依次从堆的顶部插入剩余的数字,同时调整堆。堆中最

一道java面试题,20亿数字的文本排序,如何取前100?

因为这是一个Java问题,所以这是典型的TOPK问题。首先取前100个数字构建一个最小堆,然后依次从堆的顶部插入剩余的数字,同时调整堆。堆中最后100个元素就是结果。空间复杂度为k,时间复杂度为nlogk

两个月相当充裕。

这两个月大致分为八周(56天)

第一周和第二周:

学习基础知识的主要方法是看Java编程思想,用Java实现各种数据结构,多做些事情,敲出每个知识点。

第三,四周:

关于项目,做一些简单的java项目,了解SSH框架。一两个星期就够了。

第5周:

学习Java的高级功能很困难,但实际情况并不多。如果你不明白,就看大牛的科技博客吧。

第6周:

阅读《深入了解Java虚拟机》一书,了解Java的运行机制。

第7、8周:

阅读和编写优秀项目的源代码,阅读GitHub上的代码,并了解一些常见Java类的实现。