
算法
文章平均质量分 95
nwpulei
学习中
展开
-
求链表的节点个数 链表可能有环
单向链表的长度定义为链表中的节点个数。如果链表中没有环则用如下算法链表节点定义如下struct node{ int v; node *next;};算法如下/*返回链表的长度链表为空 返回0*/size_t listLen(node * p){ size_t num = 0; while (p!=NULL) { num++; p = p->n原创 2012-10-29 22:52:11 · 3328 阅读 · 0 评论 -
两个链表的第一个公共节点
已知有两个链表,他们可能相交于某一点,求出该点。方法1.对于第一个链表,每访问一个节点,对该节点做标记。访问第二个链表,如果该元素已经访问,则第一个这样的元素就是所求点。由于两个链表都访问了一遍,因此时间复杂度O(m+n),空间复杂度O(m)或O(n)方法2.我们定义节点的距离为节点到链表开始所经过的节点数。如果两个链表长度相同,则相交节点其在两个链表上的距离一定相等。对于长度不同的两原创 2012-10-29 22:00:35 · 6635 阅读 · 1 评论 -
等概率数字筛选问题
如何等概率的从N个元素中选取出K个元素?从1....n中随机输出m个不重复的数。(迅雷2011.10.21笔试题)算法1knuth(int n, int m){ for (int i=0; i<n; i++) { if ( rand_n()<m ) // rand_n()为生成[0,n)这个区间内的随机数原创 2012-10-29 16:22:53 · 4365 阅读 · 2 评论 -
判断一个数字序列是BST后序遍历的结果
相传此乃网易二面题要求现场手写代码判断一个数字序列是BST后序遍历的结果。来源1来源2如图所示 对于后续遍历的排序二叉树应具有上面的一个不等式性质 以及 根节点为最后一个节点的性质因此代码如下//序列array有n个元素//如果这n个元素是二叉排序树的后续遍历结果 返回true//否则 返回falsebool isBST(int * array, size_t原创 2012-10-21 17:25:57 · 3896 阅读 · 1 评论 -
Beam搜素算法
Beam搜素算法的伪代码(Beam Search Algorithm)Beam算法是干什么的?他是搜索算法。大家知道,搜索算法可谓万能算法,问题只要有解,使用搜索算法在问题的解空间中搜索解,总可以找到问题的解。典型的搜索算法使用open表记录待搜索的状态,close表记录已经考察过的状态。BEAM算法中使用一个容量受限的open表,这里称作BEAM存储待搜索状态。具体算法如下,请看伪代码:原创 2012-10-31 19:43:31 · 13590 阅读 · 1 评论 -
随机抽样一致算法(RANSAC, Random Sample Consensus )
之前觉得RANSAC算法挺复杂的,这几天突然就理解了。RANSAC算法是一种通过采样集合S,以及已知的数据模型,确定模型参数的方法。该算法主要用于集合S中存在野值时模型参数的求解,对于不存在野值的情况,该方法同样适用。算法流程如下:随机的从S中选择s个数据点,s是刚能求解模型参数的点个数。并求解一组模型参数。使用求解的模型参数,重新检验S中的点。对于误差在t内的点,记录点数。对于点原创 2012-11-27 11:40:44 · 4783 阅读 · 0 评论 -
祛除验证码中的线条 python
作者: ubunoon 来源: 博客园 发布时间: 2011-02-16 22:55目前不少系统的验证码做得越来越复杂,人眼都难以识别,尤其是QQ之类的验证码,想要识别,太难了。现在有这样一个验证码:一般的验证码识别,都是先进行前处理,然后分割,在进行识别。这个验证码没有其他噪音,但存在一条横穿的曲线干扰,并且验证码中字体是粘连在一起的。如果不将干扰转载 2013-01-01 14:42:35 · 5478 阅读 · 3 评论 -
计算单向链表的的长度,有可能有环存在
单向链表的长度定义为链表中的节点个数。如果链表中没有环则用如下算法链表节点定义如下struct node{ int v; node *next;};算法如下/*返回链表的长度链表为空 返回0*/size_t listLen(node * p){ size_t num = 0; while (p!=NULL) { num++; p = p->next;原创 2012-10-29 22:50:59 · 6390 阅读 · 7 评论