25.{编程}–写一个单例模式,懒汉加载
代码设计:
//单例模式 懒汉模式
public class Singleton {
private static Singleton instance=null;
private Singleton(){
}
public static Singleton newInstance(){
//没有加锁 若并发调用时 可能会产生多个对象 优化synchronized
if(instance==null){
instance=new Singleton();
}
return instance;
}
}
26{编程}–从100000000个无序浮点数中找到10000个最大的数,要求时间复杂度最低
解题思路:
采用最小堆(优先队列实现最小堆)
将前10000个元素插入到优先队列中,然后继续遍历剩余的元素,每次遍历过程中,比较元素的值与优先队列队头的值,若当前元素的值大于优先队列队头的值,则剔除优先队列队头的值,将当前元素插入进去,这样就得到了最大的10000个数