雕刻时光

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

随笔分类 -  基础知识

摘要:http://ac.jobdu.com/problem.php?pid=1501如果一行数列里没有0,则我的方法是用两个变量正数与负数,sum表示前面数的乘积, 随时将sum 正负归类放在两个变量里,到 i 位置若为sum为负数,则在负数优先队列里找最大的负数去除到 i 位置若为sum为正数,则在正数优先队列里找#includedouble zmin;//ᅰ�ᅧ�double Fmax;//ᄌ쳐�double inp[100099];double dp[100099];int main(){ int n; while(scanf("%d",&n)!=EOF){ i 阅读全文

posted @ 2013-10-30 20:11 huhuuu 阅读(269) 评论(0) 推荐(0) 编辑

摘要:这是面试中比较常见的题目,max队列也是编程之美里的一道题对于max的栈,有个比较简单的办法就是,每次入栈前判断栈顶元素与正在入栈的元素哪个大,哪个大就哪个入栈对于队列,我们知道可以用两个栈来实现,这时,我想到是否可以用栈来维护max的队列结果是可以的,不过要用三个栈, 1 +2 ,前一个max栈+ (后一个max栈+普通的栈) ,每次寻找max都在前一个max栈和后一个max栈中找,而要更新前一个栈的时候,要把普通的栈来去更新考虑 1,2,4,3 进1进2进4进3出1出2出4 大4大4大3/*10push 1push 2push 4push 2popmaxpopmaxpopma... 阅读全文

posted @ 2013-10-30 18:01 huhuuu 阅读(447) 评论(0) 推荐(0) 编辑

摘要:在公司面试时,当场写排序比较多,虽然都是老掉牙的问题,还是要好好准备下快速排序,以第一个元素为关键词比较,每次比较结束,关键词都会去到最终位置上//7 3 2 9 8 3 4 6//7 3 2 9 8 5 4 6//7 5 2 9 8 3 4 6#includeint s[10999];void mysort(int left,int right){ if(left>=right)return; int mid,key=s[left]; int ll=left,rr=right; while(ll=key&&ll#include#includeusing namespa. 阅读全文

posted @ 2013-10-29 19:08 huhuuu 阅读(459) 评论(0) 推荐(0) 编辑

摘要:题目列表:1. 求二叉树中的节点个数 DFS遍历时记录点的个数2. 求二叉树的深度 DFS遍历时记录点的最大3. 前序遍历,中序遍历,后序遍历 三种DFS4.分层遍历二叉树(按层次从上往下,从左往右) BFS5. 将二叉查找树变为有序的双向链表 先建树,在中序遍历即可//1//4 2 1 0 0 3 0 0 6 5 0 0 7 0 0#includestruct Tree{ int v; Tree *left,*right;}*rhead;void build(Tree *head){ int temp; scanf("%d",&temp); if(te... 阅读全文

posted @ 2013-10-27 22:07 huhuuu 阅读(292) 评论(0) 推荐(0) 编辑

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