
算法
文章平均质量分 86
老哂
发展中
展开
-
经典全排列算法
全排列的生成算法就是对于给定的字符集,用有效的方法将所有可能的全排列无重复无遗漏地枚举出来。任何n个字符集的排列都可以与1~n的n个数字的排列一一对应,因此在此就以n个数字的排列为例说明排列的生成法。 n个字符的全体排列之间存在一个确定的线性顺序关系。所有的排列中除最后一个排列外,都有一个后继;除第一个排列外,都有一个前驱。每个排列的后继都可以从它 的前驱经过最少的变化而得到,全排列的生成算法就转载 2010-04-21 11:13:00 · 1709 阅读 · 0 评论 -
二叉树遍历非递归算法
定义节点类型如下:typedef struct node { /*二叉树的结点存储类型为链式*/ char data; struct node *lchild,*rchild;}node,*btree; 广度遍历比较简单: void layertraverse(btree t) //层次遍历,使用队列q{ queue q; q原创 2010-04-29 15:15:00 · 1165 阅读 · 0 评论 -
常见算法知识备忘录1
<br />待:strcpy strlen memcpy memset memmove atoi itoa的实现 <br /><br />注意时间复杂度 <br />1.给出一个数列,找出连续相加最大的和 <br />方法:(1)O(n) 一次扫描,如果sum<0, sum = 0. 英文数据结构书p23 <br /> (2)O(nlogn) devide and conqure 左右两边分别找最大,合并后的值,看看最后左、右、合并三个哪个最大 英文数据结构书p21 <br />========原创 2011-03-21 17:20:00 · 4106 阅读 · 1 评论 -
设计一个LRU Cache
原来遇到的一个面试题,今天意外想起,记录一下。问题:设计实现一个LRU Cache,需要支持三种操作:插入(insert)、替换(replace)、查找(lookup)思路:用HashMap做为基础容器,容器内Value组成双向链表,由双向链表支持LRU的替换策略。链表需要维持数据项从最近访问到最旧访问的顺序。插入:当Cache未满时,新的数据项只需插到双链表头部即可。时间复杂度为O(1)O(1)...原创 2018-03-08 16:34:45 · 678 阅读 · 0 评论