随笔分类 -  07. 算法

1 2 下一页

算法与数据结构,是否可以归到“09. IT与数学”中?
关于字典树
摘要:字典树是什么,到wiki或者百度百科看一下就可以了,从名字也可以想象得到,这里我就不把定义再打一遍了,从网上找了一个实现,然后自己做了一个实现,这里记录一下。 字典树有几种具体的实现方式,有基于hash的,有基于平衡树的,还有二级字典树等。 字典树是典型的用空间来换时间的算法。 字典树主要的方法就是插入和查找 字典树又称为Trie。 阅读全文

posted @ 2009-11-26 21:40 cnyao 阅读(646) 评论(0) 推荐(0)

面试题之10亿正整数问题--完整解答
摘要:这个题目来源于某公司的面试题,是absolute同学在我的“面试题收集贴”中提出的,之后CMGS同学在回复中提到,腾讯今年的面试题中有类似题目,问题规模扩大了10倍,但是本质相同。下面我们来看一下题目: 10亿个正整数,只有其中1个数重复出现过,要在O(n)的时间里面找出这个数,内存要尽可能少(小于100M)。 阅读全文

posted @ 2009-11-26 21:18 cnyao 阅读(4296) 评论(21) 推荐(5)

用递归实现回文判断
摘要:用递归实现回文判断 阅读全文

posted @ 2009-11-08 19:37 cnyao 阅读(541) 评论(3) 推荐(0)

面试题之10亿正整数问题
摘要:大家已经知道这是腾讯今年的面试题之一,也可能是其他一些公司的面试题中的一个。同时最初是出现在《编程珠玑》中,我们来分析它,是为了了解这道题目如何解决,而不单单是得到一种大约的方法就足够,还是了解清楚。 10亿个正整数,只有其中1个数重复出现过,要在O(n)的时间里面找出这个数,内存要尽可能少(小于100M)。 阅读全文

posted @ 2009-11-06 23:08 cnyao 阅读(4579) 评论(18) 推荐(3)

递归之快速排序算法
摘要:快速排序,最常用的那种,就是选择数组中的第一个元素,之后对后面的元素,比该元素小的放在该元素的左边,比该元素大的放在该元素的右边。然后对于左边和右边两个子数组,同样进行上面的过程,一直到子数组的数目为1停止。 快速排序平均的时间复杂度是O(lgn)。快速排序属于不稳定排序。 阅读全文

posted @ 2009-11-05 20:34 cnyao 阅读(857) 评论(2) 推荐(0)

概率题之疯子坐飞机问题 :(
摘要:飞机上有100个座位,按顺序从1到100编号。有100个乘客,他们分别拿到了从1号到100号的座位,他们按号码顺序登机并应当对号入座,如果他们发现对应号座位被别人坐 了,他会在剩下空的座位随便挑一个坐。现在假如1号乘客疯了 -_-! (其他人没疯),他会在100个座位中随机座一个座位。那么第100人正确坐自己坐位的概率是多少? 阅读全文

posted @ 2009-11-05 18:24 cnyao 阅读(3954) 评论(34) 推荐(1)

递归题目之斐波那契数列
摘要:原题:用递归求第10个数,它等于前2数之和,如{1,1,2,3,5} 得到递归式为f(n)=f(n-1)+f(n-2),终止条件为f(0)=1, f(1)=1。求的数为f(9)。 阅读全文

posted @ 2009-11-03 22:44 cnyao 阅读(3252) 评论(4) 推荐(2)

递归之递归的数据结构
摘要:说到递归的题目,一般自然就会想到阶乘、斐波那契以及谭老师的汉诺塔;那说到递归的数据结构呢,当然是树结构了。 可以说树天生是合适进行递归的 阅读全文

posted @ 2009-11-03 20:40 cnyao 阅读(910) 评论(1) 推荐(1)

面试题目之逆向输出链表
摘要:逆向输出一个链表,不使用循环。 阅读全文

posted @ 2009-11-01 13:11 cnyao 阅读(2882) 评论(40) 推荐(0)

递归题目1
摘要:关于链表的内容差不多了,现在是关于递归的部分。递归作为常常使用到的技术,也是面试时最容易被考到的部分,值得去理解,去思考。 这个比较简单,计算从1到100的累加,用递归来实现。 阅读全文

posted @ 2009-10-31 19:28 cnyao 阅读(407) 评论(0) 推荐(0)

【待解惑问题(已解决)】约瑟夫(Josephus)环问题
摘要:周末到了,首先祝大家周末愉快。可怜我周末都没得休息,继续努力 :)大家该哈皮的去哈皮吧。 昨天,其实从前天开始就开始准备约瑟夫环,昨晚就准备开始写,不过想来想去对其数学推导出递推式还是没有想明白。大家有空帮忙看看,到底这个递推式是怎么出来的呢?我下面会一步步将自己的思考列下来。多谢多谢。 一开始将题目和模拟法稍微写一下,之后是关于数学方法的疑惑,大家可以直接略过上面的一些内容,跳到关键部分。 阅读全文

posted @ 2009-10-31 10:09 cnyao 阅读(3050) 评论(3) 推荐(1)

穷究链表(十三)
摘要:前面完成了三个比较完整的链表程序。下面就是使用模板类来实现这个链表程序了。 阅读全文

posted @ 2009-10-22 19:33 cnyao 阅读(309) 评论(0) 推荐(0)

穷究链表(十二)
摘要:在实现模板之前,我们来实现一下嵌套类。 阅读全文

posted @ 2009-10-22 18:51 cnyao 阅读(269) 评论(0) 推荐(0)

穷究链表(十一)
摘要:前面我们已经实现了链表的C语言版本,并看了现实中的实现,现在来实现C++版本。C++的话,就有类,有构造函数,析构函数。但是这里实现链表不需要使用到继承,没有继承也就没有多态,只是封装。 列出参考书籍和网址: 参考《C++标准程序库》,由侯捷、孟岩翻译,在166页开始讲解list的部分。 侯捷的《STL源码分析》 阅读全文

posted @ 2009-10-21 22:53 cnyao 阅读(379) 评论(0) 推荐(0)

穷究链表(十)
摘要:今天来看看C实现的链表的经典,也就是linux内核中使用的链表形式。内核代码是在www.kernel.org/处下载的。这里选择了最新的源码包进行下载,为linux-2.6.31.1。其实链表作为最常用的数据结构,应该是变化不大的,虽然没有比较过,但是如果你下载2.4的内核代码,链表部分应该还是一样的。 阅读全文

posted @ 2009-10-20 20:16 cnyao 阅读(388) 评论(0) 推荐(0)

穷究链表(九)
摘要:到这里为止,所有C相关的实现暂时已经完成,里面的代码经过一些不完整的测试,如果有问题,非常感谢能够提供给我,我会尽快将其进行更新。 下面就是对C相关网络上找到的较为可靠的实现进行的分析 阅读全文

posted @ 2009-10-09 21:17 cnyao 阅读(231) 评论(0) 推荐(0)

穷究链表(八)
摘要:这一篇来实现反转链表,反转链表应该算是链表操作中比较麻烦一些的操作,也是面试中常常会被问到的。可以用递归和非递归的方式来进行解决,这里我们先使用非递归的方式,然后使用递归来做。 阅读全文

posted @ 2009-10-09 20:03 cnyao 阅读(319) 评论(0) 推荐(0)

穷究链表(七)
摘要:这篇会实现3个函数,包括删除一个节点,查找节点,以及合并两个链表。 阅读全文

posted @ 2009-10-08 21:38 cnyao 阅读(400) 评论(1) 推荐(1)

穷究链表(六)
摘要:这篇会开始进行链表函数的实现,这里先实现两个函数。 阅读全文

posted @ 2009-10-08 20:57 cnyao 阅读(348) 评论(1) 推荐(0)

穷究链表(五)
摘要:首先根据第四篇中的原则,将想要实现的链表操作确定下来 1.添加 void addnode(listnode* header, listnode* newnode, int pos); 2.删除 void deletenode(listnode* header, int pos) 3.遍历 void printlist(listnode *header) 4.倒序 void reverselist(listnode *header) 5.两个链表合并 void combinelist(listnode *header, listnode *list2) 6. 查找特定节点 listnode* findnode(listnode *header, int pos) 阅读全文

posted @ 2009-10-08 15:50 cnyao 阅读(325) 评论(0) 推荐(0)

1 2 下一页