lintcode
nawuyao
这个作者很懒,什么都没留下…
展开
-
lintCode(128)——哈希函数
问题描述:在数据结构中,哈希函数是用来将一个字符串(或任何其他类型)转化为小于哈希表大小且大于等于零的整数。一个好的哈希函数可以尽可能少地产生冲突。一种广泛使用的哈希函数算法是使用数值33,假设任何字符串都是基于33的一个大整数,比如:hashcode("abcd") = (ascii(a) * 333 + ascii(b) * 332 + ascii(c) *33 + ascii(d))原创 2016-03-22 11:28:20 · 1725 阅读 · 0 评论 -
lintCode(469)——等价二叉树
题目描述:检查两棵二叉树是否等价。等价的意思是说,首先两棵二叉树必须拥有相同的结构,并且每个对应位置上的节点上的数都相等。样例1 1/ \ / \2 2 and 2 2/ /4 4就是两棵等价的二叉树。1 1/ \ / \2 3 and 2 3/ \ 4 4就不是等价的。难度等级:容易代码如下:/** * Definit原创 2016-04-08 20:15:00 · 647 阅读 · 0 评论 -
lintCode(372)——在O(1)时间复杂度删除链表节点
题目描述:给定一个单链表中的表头和一个等待被删除的节点。请在在O(1)时间复杂度删除该链表节点。并在删除该节点后,返回表头。样例:给定 1->2->3->4,和节点 3,返回 1->2->4。这是一道广为流传的Google面试题,能有效考察我们的编程基本功,还能考察我们的反应速度,更重要的是,还能考察我们对时间复杂度的理解。在链表中删除一个结点,最常规的做法是从原创 2016-04-08 10:10:01 · 1341 阅读 · 0 评论 -
lintCode(420)——报数
题目描述:报数指的是,按照其中的整数的顺序进行报数,然后得到下一个数。如下所示:1, 11, 21, 1211, 111221, ...1 读作 "one 1" -> 11.11 读作 "two 1s" -> 21.21 读作 "one 2, then one 1" -> 1211.给定一个整数 n, 返回 第 n 个顺序。难度等级:简单原创 2016-04-08 08:43:04 · 724 阅读 · 0 评论 -
lintCode(177)——把排序数组转换为高度最小的二叉搜索树
题目描述:给一个排序数组(从小到大),将其转换为一棵高度最小的排序二叉树。样例给出数组 [1,2,3,4,5,6,7], 返回 4 / \ 2 6 / \ / \1 3 5 7挑战可能有多个答案,返回任意一个即可难度类型:简单分析:如果数组是空的,返回空指针。否则,因为数组时排序数组,取原创 2016-04-07 21:11:41 · 515 阅读 · 0 评论 -
lintcode(480)——二叉树的所有路径
问题描述:给一棵二叉树,找出从根节点到叶子节点的所有路径 样例 给出下面这棵二叉树:1 / \ 2 3 \ 5 所有根到叶子的路径为:[ “1->2->5”, “1->3” ]分析:一般二叉树的问题用递归解决比较简洁。在库文件string中,to_string(int value)是把一个整数转换为字符串;两个字符串使用“+”连接,是字符串的无空格原创 2016-04-07 17:33:27 · 2747 阅读 · 0 评论 -
lintCode(408)——二进制求和
题目描述:给定两个二进制字符串,返回他们的和(用二进制表示)。样例a = 11b = 1返回 100难度级别:容易思路分析:此题思路较为简单,认真判断进位就可以了。需要注意的是,需要仔细判断是否存在最后一次进位,即进位的值是否都加起来了。读两个输入的字符串,是从最低位(即字符串尾)开始进行加法和进位计算的,得到的结果字符串是从原创 2016-04-07 15:54:52 · 620 阅读 · 0 评论 -
lintCode(133)——最长单词
问题描述:给一个词典,找出其中所有最长的单词。样例:在词典{"dog","google","facebook","internationalization","blabla"}中, 最长的单词集合为 ["internationalization"]在词典{"like","love","hate","yes"}中,最长的原创 2016-03-22 15:46:26 · 755 阅读 · 0 评论 -
lintCode(129)——重哈希
问题描述:哈希表容量的大小在一开始是不确定的。如果哈希表存储的元素太多(如超过容量的十分之一),我们应该将哈希表容量扩大一倍,并将所有的哈希值重新安排。假设你有如下一哈希表:size=3, capacity=4[null, 21, 14, null] ↓ ↓ 9 null ↓ null原创 2016-03-22 14:53:50 · 1114 阅读 · 0 评论 -
lintCode(114)——不同的路径
问题描述:有一个机器人的位于一个M×N个网格左上角(下图中标记为'Start')。机器人每一时刻只能向下或者向右移动一步。机器人试图达到网格的右下角(下图中标记为'Finish')。问有多少条不同的路径? 思路:看似简单一道题,就是mxn的格子里从左上角走到右下角有多少种走法,只能向右或向下走。分析:向下需要 m-1 步,向右需要 n-1 步,所以总的走法就原创 2016-03-21 22:29:49 · 658 阅读 · 0 评论 -
lintCode(115)——不同的路径||
问题描述:"不同的路径" 的跟进问题:现在考虑网格中有障碍物,那样将会有多少条不同的路径?网格中的障碍和空位置分别用 1 和 0 来表示。如下所示在3x3的网格中有一个障碍物:[[0,0,0],[0,1,0],[0,0,0]]一共有2条不同的路径从左上角到右下角。思路:由于部分格子有障碍物,不能访问到,需要对左上角和右下角格子进行判断原创 2016-03-21 22:59:02 · 442 阅读 · 0 评论 -
lintCode(453)——将二叉树拆分成链表
题目描述:将一棵二叉树按照前序遍历拆解成为一个假链表。所谓的假链表是说,用二叉树的 right 指针,来表示链表中的 next 指针。注意事项:不要忘记将左儿子标记为 null,否则你可能会得到空间溢出或是时间溢出。样例 1 / \ 2 5 / \ \ 3 4 6The flat原创 2016-04-08 11:18:43 · 2741 阅读 · 0 评论