随笔分类 - fight for me
摘要:尴尬了,昨天被问,突然不知道咋搞。 二叉树遍历,前中后,是以root为准的前中后 所以反转二叉树用后续遍历就好 递归 非递归
阅读全文
摘要:一个二叉树,从右边看,输出你看到的从上到下的顺序 其实就是遍历每一层
阅读全文
摘要:就是找x+y=-z的组合 转化为找出值为-z满足x+y=-z的组合 解法一: 为了查找,首先想到排序,为了后面的二分,nlogn, 然后x+y的组合得n^2的复杂度,加上查找是否为-z,复杂度为nlogn + n^2 * logn 解法二: 还是先从小到大排序 nlogn 假设数组排序后为 a b
阅读全文
摘要:/** wenbin Reverse the list **//*逆转单链表,没什么技巧,用3个指针即可*/#include #define LL __int64using namespace std;/* .................................................
阅读全文
摘要:http://www.acmerblog.com/distance-between-given-keys-5995.htmllca在后序遍历中找,tralian算法还不会,懂了再补充有了lca就好求路径了,做差而已了。//=======================================...
阅读全文
摘要:对当前排列从后向前扫描,找到一对为升序的相邻元素,记为i和j(i < j)。如果不存在这样一对为升序的相邻元素,则所有排列均已找到,算法结束;否则,重新对当前排列从后向前扫描,找到第一个大于i的元素k,交换i和k,然后对从j开始到结束的子序列反转,则此时得到的新排列就为下一个字典序排列。这种方式实现...
阅读全文
摘要:采用小的在多的进行二分查找的方法。设两个指向两个数组末尾的指针,取较小的那个数在另一个数组中二分查找,找到,则存在一个交集,并且将该目标数组的指针指向该位置前一个位置。如果没有找到,同样可以找到一个位置,使得目标数组中在该位置后的数肯定不在另一个数组中存在,直接移动该目标数组的指针指向该位置的前一个...
阅读全文
摘要:后序遍历就行。//寻找二叉树两个结点的最低共同父节点TreeNode *FindFirstCommonParentNode(TreeNode *pRoot, TreeNode *pNodeOne, TreeNode *pNodeTwo){ if (NULL == pRoot) { ...
阅读全文
摘要:编程珠玑第二题。。。如果是用位图的话。。。如果内存不够,那么就需要二分,注意思想就是先找到中间数mid,然后把文件以mid分为两个文件,肯定丢失的数在数目小的那个文件中,然后递归去那个小的文件中找就行了。复杂度是o(2n) n+n/2+n/4+n/8+.....看了别人写了一个代码:int spli...
阅读全文
摘要:如果 S 表示一连串特定顺序排列的词 w1, w2,…, wn ,换句话说,S 可以表示某一个由一连串特定顺序排练的词而组成的一个有意义的句子。现在,机器对语言的识别从某种角度来说,就是想知道 S 在文本中出现的可能性,也就是数学上所说的 S 的概率用 P(S) 来表示。利用条件概率的公式,S 这个...
阅读全文
摘要:http://blog.csdn.net/kenby/article/details/6833407http://blog.csdn.net/kenby/article/details/6833407o(logn)两种方法:一、二分查找中位数只有一个,它前面有 c = (m+n-1)/2 个数比它小...
阅读全文
摘要:http://www.cnblogs.com/luxiaoxun/archive/2012/09/12/2681268.htmlhttp://blog.csdn.net/wangkechuang/article/details/7906540一、归并1、内排序由于要求的可用内存为1MB,那么每次可以...
阅读全文
摘要:在java中为了避免 low+high溢出,可以用无符号右移:正数高位补0,负数高位补1int mid = (low + high) >>> 1;如果是在c++中,那么需要先转换为unsigned的再移位inta=100;intb;b=((unsignedint)a)>>1;或者int mid = ...
阅读全文
摘要:#include /* match: search for regexp anywhere in text */int match(char *regexp, char *text){ if (regexp[0] == '^') return matchhere(regexp+1...
阅读全文
摘要:/****qsort.c - quicksort algorithm; qsort() library function for sorting arrays* Copyright (c) Microsoft Corporation. All rights reserved.**Purp...
阅读全文
摘要:/***********************C语言标准库函数strcpy的一种典型的工业级的最简实现*返回值:目标串的地址。*对于出现异常的情况ANSI-C99标准并未定义,故由实现者决定返回值,通常为NULL。*参数:des为目标字符串,source为原字符串*/ char*strcpy(ch...
阅读全文
摘要:在java中为了避免 low+high溢出,可以用无符号右移:正数高位补0,负数高位补1int mid = (low + high) >>> 1;如果是在c++中,那么需要先转换为unsigned的再移位inta=100;intb;b=((unsignedint)a)>>1;或者int mid = ...
阅读全文
摘要:给定a、b两个文件,各存放50亿个url,每个url各占用64字节,内存限制是4G,如何找出a、b文件共同的url?可以估计每个文件的大小为5G*64=300G,远大于4G。所以不可能将其完全加载到内存中处理。考虑采取分而治之的方法。遍历文件a,对每个url求取hash(url)%1000,然后根据...
阅读全文
摘要:题目是给出V个村庄,取出P个做为邮局,要求每个村庄到邮局的距离和最小。先考虑只有一个邮局的情况,不管你怎么放邮局和最小的情况总是在中点的位置。再来考虑P>1的情况:假设P-1个邮局已经选好,那么最后一个只要在剩下的未选村庄中选择一个 使和加起来最小。就有递推式: m[v ][p ]=min{ m[i...
阅读全文
摘要:竟然忘记了汉诺塔递归了。。。有3个柱子,有n个盘子在A柱子,需要通过B把n个盘子放到C的柱子上。盘子都是从上到下半径依次增大的hanoi(int n,char A,char B,char C)//通过B把A上的n个盘放到C上{ if(n==1) move(1,A,C);//如果是编号为1的盘就...
阅读全文