雕刻时光

just do it……nothing impossible
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

2013年10月5日

摘要: 面试中比较多会出序列有关的面试题,所以就总结下(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) 编辑

摘要: http://pat.zju.edu.cn/contests/pat-a-practise/1043给予N个数字组成二叉搜索树,判断这个数列是否由先序遍历得出或是镜像先序遍历得出,若是则输出相应的后续遍历或是镜像后续遍历分析:镜像先序遍历其实就是 先访问祖先,再访问右子树,再左子树镜像后续遍历就是先访问右子树,再左子树,在祖先#includestruct tree{ int v; tree *left,*right;};int shu[1099];int pre[1099];int post[1099];int step;void bulid(tree* head,int v){ ... 阅读全文

posted @ 2013-10-05 11:27 huhuuu 阅读(285) 评论(0) 推荐(0) 编辑