算法面试题
pty_2007
这个作者很懒,什么都没留下…
展开
-
判断两个链表是否相交
曾经面试被问到这个问题了,当时用的最蠢的方法回答的。这里做个总结。方法1:使用两次循环,判断第一个链表是否有元素在第二个链表中;方法2:如果两个链表有相同的节点,那么从这个相同节点开始之后的所有的节点都是存在的,所以如果两个链表相交,那么这两个链表的最后一个元素必定相同,所以分别遍历两个链表,确定最后一个元素是否相同即可;方法3:对第一个表做hash,构造出一个hash表,然后对第二表原创 2013-02-25 20:18:15 · 449 阅读 · 0 评论 -
在字符串中删除特定的字符
题目:输入两个字符串,从第一字符串中删除第二个字符串中所有的字符。例如,输入”They are students.”和”aeiou”,则删除之后的第一个字符串变成”Thy r stdnts.”。这道题的基本思路就是在第一个字符串中拿到一个字符,在第二个字符串中查找一下,看它是不是在第二个字符串中。如果在的话,就从第一个字符串中删除。首先我们考虑如何在字符串中删除一个字符。由于字符串的内转载 2013-02-25 20:38:20 · 532 阅读 · 0 评论 -
设计包含min函数的栈
题目:设计包含min函数的栈。定义栈的数据结构,要求添加一个min函数,能够得到栈的最小元素。要求函数min、push以及pop的时间复杂度都是O(1)。思路:用数组就可以实现栈,并且stl的实现原理也确实是那样的。push和pop的复杂度是O(1)很好保证,但是min呢?很明显,如果可以直接return最小值,那么min的复杂度必然是O(1)。由此为栈增加一个变量原创 2013-02-25 16:06:23 · 514 阅读 · 0 评论 -
检查字符是否是整数
int convert(char ch){ if('0' <= ch && ch <= '9') return ch - '0'; else return -1; }原创 2013-03-01 22:10:14 · 622 阅读 · 0 评论 -
哈夫曼树
1. 哈夫曼树的基本概念 哈夫曼树( Huffman )又称最优二叉树,是一类带权路径长度最短的树,有着广泛的应用。 在讨论哈夫曼树之前首先需要弄清楚关于路径和路径长度的概念。树中两个结点之间的路径由一个结点到另一结点的分支构成。两结点之间的路径长度是路径上分支的数目。树的路径长度是从根结点到每一个结点的路径长度之和。 设一棵二叉树有 n 个叶子结点,每个叶子结点拥有一个权值W转载 2013-09-25 15:48:04 · 1882 阅读 · 0 评论