摘要:
面试中比较多会出序列有关的面试题,所以就总结下(1)一个长度N为的序列,求前K小的数 1.排序 N*log(N) 2.最大堆N*log(K) 3.有平均时间复杂度O(n)的算法,因为我们可以在O(n)的时间内找到未排序数组里面第k小的数的值,然后再遍历一下数组,把值小于等于第k小的全都输出(感谢huangnima)(2)有两个长度为N的有序序列A和B,在A和B中各任取一个数可以得到N^2个和,求这N^2个和中最小的N个。 1.比较直观的想法是将A与B的数字相加后排序,时间复杂度O(N*N*log(N*N)) 2.考虑到要求的是求最小的N个数字,所以从这里考虑优化,维护一个大小为N... 阅读全文
posted @ 2013-10-05 20:13 huhuuu 阅读(1576) 评论(6) 推荐(0) 编辑