LintCode
文章平均质量分 65
LimonSea
做喜欢的事
展开
-
LintCode【简单】35. 翻转链表 。代码及思路
题目要求:翻转一个链表您在真实的面试中是否遇到过这个题? Yes样例给出一个链表1->2->3->null,这个翻转后的链表为3->2->1->null挑战 在原地一次翻转完成思路:本来想挑战一下的,但是没有想到好的方法……那么还是用笨方法吧,就是新建一个链表头,用来标记头节点,不存放数原创 2018-01-30 17:05:45 · 285 阅读 · 0 评论 -
LintCode【简单】93. 平衡二叉树。代码及思路
题目要求:给定一个二叉树,确定它是高度平衡的。对于这个问题,一棵高度平衡的二叉树的定义是:一棵二叉树中每个节点的两个子树的深度相差不会超过1。 样例给出二叉树 A={3,9,20,#,#,15,7}, B={3,#,20,15,7}A) 3 B) 3 / \ \ 9 20 20 /...原创 2018-02-10 11:16:58 · 266 阅读 · 0 评论 -
LintCode【简单】28. 搜索二维矩阵 。代码及思路
题目要求写出一个高效的算法来搜索 m × n矩阵中的值。这个矩阵具有以下特性:每行中的整数从左到右是排序的。每行的第一个数大于上一行的最后一个整数。您在真实的面试中是否遇到过这个题? Yes样例考虑下列矩阵:[ [1, 3, 5, 7], [10, 11, 16, 20], [23, 30, 34, 5原创 2018-01-29 17:02:09 · 224 阅读 · 0 评论 -
LintCode【简单】55. 比较字符串 。代码及思路
lintcode的页面总是刷不出来,好不容易刷出来提交一直在pending,一刷新网页又出不来了,不知道有没有人和我情况一样,我很抓狂啊现在!!!题目要求:比较两个字符串A和B,确定A中是否包含B中所有的字符。字符串A和B中的字符都是 大写字母 注意事项在 A 中出现的 B 字符串里的字符不需要连续或者有序。样例原创 2018-02-05 22:51:50 · 429 阅读 · 0 评论 -
LintCode【简单】60. 搜索插入位置 。代码及思路
题目要求:给定一个排序数组和一个目标值,如果在数组中找到目标值则返回索引。如果没有,返回到它将会被按顺序插入的位置。你可以假设在数组中无重复元素。样例[1,3,5,6],5 → 2[1,3,5,6],2 → 1[1,3,5,6], 7 → 4[1,3,5,6],0 → 0挑战 O(log(n)) t原创 2018-02-06 10:29:25 · 257 阅读 · 0 评论 -
LintCode【简单】96. 链表划分。代码及思路
题目要求:给定一个单链表和数值x,划分链表使得所有小于x的节点排在大于等于x的节点之前。你应该保留两部分内链表节点原有的相对顺序。样例给定链表 1->4->3->2->5->2->null,并且 x=3返回 1->2->2->4->3->5->null思路:循环两遍,第一遍找比x小的,加入新链表里,第二遍找剩下的,按顺序放进去...原创 2018-02-11 16:00:15 · 347 阅读 · 0 评论 -
LintCode【简单】97. 二叉树的最大深度 。代码及思路
题目要求:给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的距离。样例给出一棵如下的二叉树: 1 / \ 2 3 / \ 4 5这个二叉树的最大深度为3.思路:递归,每次如果有节点则max++,最后返回左右里面最大的那个。代码:/** * Definition of TreeNode: * class TreeNode { * public: *...原创 2018-02-11 23:18:25 · 268 阅读 · 0 评论 -
LintCode【简单】64. 合并排序数组。代码及思路
题目要求:合并两个排序的整数数组A和B变成一个新的数组。 注意事项你可以假设A具有足够的空间(A数组的大小大于或等于m+n)去添加B中的元素。样例给出 A = [1, 2, 3, empty, empty], B = [4, 5]合并之后 A 将变成 [1,2,3,4,5]思路:把B组添原创 2018-02-06 19:11:03 · 285 阅读 · 0 评论 -
LintCode【简单】66. 二叉树的前,中,后序遍历。代码及思路
题目要求:给出一棵二叉树,返回其节点值的前序遍历。样例给出一棵二叉树 {1,#,2,3}, 1 \ 2 / 3 返回 [1,2,3].思路:递归遍历。前,中,后序只是顺序改变了一下,前序是a.push_back在两个递归之前,中序是在中间,后序是在之后。代码:/**原创 2018-02-06 21:00:55 · 299 阅读 · 0 评论 -
LintCode【简单】101. 删除排序数组中的重复数字 II。代码及思路
题目要求:跟进“删除重复数字”:如果可以允许出现两次重复将如何处理?思路:之前忘记上一道题的题目要求了……其实给的是一个排序的数组,所以可以通过减少循环次数缩小时间复杂度,具体见代码。代码:class Solution {public: /** * @param A: a list of integers * @return : return an integer ...原创 2018-02-13 15:34:07 · 391 阅读 · 5 评论 -
LintCode【简单】100. 删除排序数组中的重复数字。代码及思路
题目要求:给定一个排序数组,在原数组中删除重复出现的数字,使得每个元素只出现一次,并且返回新的数组的长度。不要使用额外的数组空间,必须在原地没有额外空间的条件下完成。样例给出数组A =[1,1,2],你的函数应该返回长度2,此时A=[1,2]。思路:之前没看到是排序数组,导致写的代码时间复杂度比较大,修改好的代码如下。代码:class Solution {public: /* ...原创 2018-02-12 19:00:48 · 249 阅读 · 0 评论 -
LintCode【简单】69. 二叉树的层次遍历。代码及思路
题目要求:给出一棵二叉树,返回其节点值的层次遍历(逐层从左往右访问)您在真实的面试中是否遇到过这个题? Yes样例给一棵二叉树 {3,9,20,#,#,15,7} : 3 / \9 20 / \ 15 7返回他的分层遍历结果:[ [3], [9,20], [15,7]]思原创 2018-02-07 19:35:52 · 326 阅读 · 0 评论 -
LintCode【简单】109. 数字三角形。代码及思路 —— 动态规划
题目要求:给定一个数字三角形,找到从顶部到底部的最小路径和。每一步可以移动到下面一行的相邻数字上。 注意事项如果你只用额外空间复杂度O(n)的条件下完成可以获得加分,其中n是数字三角形的总行数。您在真实的面试中是否遇到过这个题? Yes样例比如,给出下列数字三角形:[ [2], [3,4], [6,5,7], [4,1,8,3]]从顶到底部的最小路径和为11 ( 2...原创 2018-02-14 22:24:36 · 475 阅读 · 0 评论 -
LintCode【简单】80. 中位数。代码及思路
题目要求:给定一个未排序的整数数组,找到其中位数。中位数是排序后数组的中间值,如果数组的个数是偶数个,则返回排序后数组的第N/2个数。样例给出数组[4, 5, 1, 2, 3], 返回 3给出数组[7, 9, 4, 5],返回 5思路:给容器排序,然后取中间值,不用考虑容器空的情况。代码:class Solution {public: /* * @param : A list ...原创 2018-02-07 22:18:07 · 262 阅读 · 0 评论 -
LintCode【简单】85. 在二叉查找树中插入节点。代码及思路
题目要求:给定一棵二叉查找树和一个新的树节点,将节点插入到树中。你需要保证该树仍然是一棵二叉查找树。 注意事项You can assume there is no duplicate values in this tree + node.样例给出如下一棵二叉查找树,在插入节点6之后这棵二叉查找树可以是这样的: 2 2 / \ / \1 4 ...原创 2018-02-09 10:49:47 · 239 阅读 · 0 评论 -
LintCode【简单】22. 平面列表 。代码及思路
题目要求给定一个列表,该列表中的每个要素要么是个列表,要么是整数。将其变成一个只包含整数的简单列表。 注意事项如果给定的列表中的要素本身也是一个列表,那么它也可以包含列表。您在真实的面试中是否遇到过这个题? Yes样例给定 [1,2,[1,2]],返回 [1,2,1,2]。给定 [4,[3,[2,[原创 2018-01-27 11:49:56 · 351 阅读 · 0 评论 -
LintCode【简单】30. 插入区间 。代码及思路——vector中如何删除指定区间元素,插入指定位置元素
vector我喜欢用位置表示元素,这里和别人用个数解释的不一样删除元素:vec.erase(vec.begin()+i) 删除第i号位置的元素,如果单纯这样写:vec.erase(vec.begin()),则删除第0号位置的元素。删除指定区间元素:vec.erase(vec.begin()+i,vec.begin()+j) 删除的是[i, j-1]位置的元素。如果要包括j位原创 2018-01-29 22:00:06 · 1736 阅读 · 0 评论 -
LintCode【简单】39. 恢复旋转排序数组 。代码及思路
题目要求:给定一个旋转排序数组,在原地恢复其排序。您在真实的面试中是否遇到过这个题? Yes说明什么是旋转数组?比如,原始数组为[1,2,3,4], 则其旋转数组可以是[1,2,3,4], [2,3,4,1], [3,4,1,2], [4,1,2,3]样例[4, 5, 1, 2, 3] -> [1,原创 2018-01-30 18:40:49 · 337 阅读 · 0 评论 -
LintCode【简单】41. 最大子数组 。代码及思路
题目要求:给定一个整数数组,找到一个具有最大和的子数组,返回其最大和。 注意事项子数组最少包含一个数您在真实的面试中是否遇到过这个题? Yes样例给出数组[−2,2,−3,4,−1,2,1,−5,3],符合要求的子数组为[4,−1,2,1],其最大和为6思路:思路不对【捂脸】,本来很原创 2018-01-30 22:48:47 · 256 阅读 · 0 评论 -
LintCode【简单】167. 链表求和 。代码及思路
自从前天做这道题做到半夜,直到今天上午我都没有碰它……适当的放弃不是失败,而是为了更好的开始。题目要求你有两个用链表代表的整数,其中每个节点包含一个数字。数字存储按照在原来整数中相反的顺序,使得第一个数字位于链表的开头。写出一个函数将两个整数相加,用链表形式返回和。您在真实的面试中是否遇到过这个题? Yes样例给出两个链表原创 2018-01-24 18:08:34 · 277 阅读 · 0 评论 -
LintCode【简单】56.两数之和 。代码及思路
这是我第一次在LintCode上刷题……以前在学校有刷过一点数据结构平台上的题,后来自己找其他oj,也没找到一个好看一点的……这次加入了学校为比赛准备的寒假训练,才接触到了LintCode,界面啊做题感受啊简直太美好了!!!因为第一次用,还是想墨迹一点感受。可以选择的语言有,python我学的是3,这次做题选择了好久没练的java,居然连怎么定义数组都忘了QAQ。题目要求很简单原创 2018-01-22 16:24:54 · 465 阅读 · 0 评论 -
LintCode【简单】2. 尾部的零 。代码及思路
题目要求设计一个算法,计算出n阶乘中尾部零的个数您在真实的面试中是否遇到过这个题? Yes样例11! = 39916800,因此应该返回 2挑战 O(logN)的时间复杂度思路看到这个题目的时候我只想到了暴力求解,但是显然挑战没办法做出来,看到了一篇特别好的文章-> 计算n阶乘中尾部零的原创 2018-01-24 22:28:05 · 177 阅读 · 0 评论 -
LintCode【简单】8. 旋转字符串 。代码及思路
题目要求给定一个字符串和一个偏移量,根据偏移量旋转字符串(从左向右旋转)您在真实的面试中是否遇到过这个题? Yes样例对于字符串 "abcdefg".offset=0 => "abcdefg"offset=1 => "gabcdef"offset=2 => "fgabcde"offset=3 => "efgabcd"原创 2018-01-25 11:12:17 · 825 阅读 · 0 评论 -
LintCode【简单】44. 最小子数组 。代码及思路
题目要求:给定一个整数数组,找到一个具有最小和的子数组。返回其最小和。 注意事项子数组最少包含一个数字您在真实的面试中是否遇到过这个题? Yes样例给出数组[1, -1, -2, 1],返回 -3思路:这个和41,最大子数组如出一辙,这次我写出来了……先遍历一遍,假如所有的数都是大于0的原创 2018-02-01 15:27:45 · 267 阅读 · 0 评论 -
LintCode【简单】46. 主元素 。代码及思路
题目要求:给定一个整型数组,找出主元素,它在数组中的出现次数严格大于数组元素个数的二分之一。 注意事项You may assume that the array is non-empty and the majority number always exist in the array.样例给出数组[1,1原创 2018-02-01 16:54:31 · 306 阅读 · 0 评论 -
LintCode【简单】50. 数组剔除元素后的乘积 。代码及思路
题目要求:给定一个整数数组A。定义B[i] = A[0] * ... * A[i-1] * A[i+1] * ... * A[n-1], 计算B的时候请不要使用除法。样例给出A=[1, 2, 3],返回 B为[6, 3, 2]思路:根据给出的样例,很容易发现当i不是两端的时候,b[i]等于a[0]到a[i-1]的乘积乘原创 2018-02-01 20:36:40 · 229 阅读 · 0 评论 -
LintCode【简单】13. 字符串查找 。代码及思路
题目要求对于一个给定的 source 字符串和一个 target 字符串,你应该在 source 字符串中找出 target 字符串出现的第一个位置(从0开始)。如果不存在,则返回 -1。您在真实的面试中是否遇到过这个题? Yes说明在面试中我是否需要实现KMP算法?不需要,当这种问题出现在面试中时,面试官很可能只是想要测原创 2018-01-25 20:03:16 · 604 阅读 · 0 评论 -
LintCode【简单】14. 二分查找 。代码及思路
二分查找就是折半查找,通过两个指针或者整型的下标来标记数组的起始和终止,通过mid判断所给的数值在mid的哪一边。前提这个数组一定得是顺序排序的。题目要求给定一个排序的整数数组(升序)和一个要查找的整数target,用O(logn)的时间查找到target第一次出现的下标(从0开始),如果target不存在于数组中,返回-1。您在真实的面试中是否遇到过这个题?原创 2018-01-25 21:17:28 · 335 阅读 · 0 评论 -
LintCode【简单】6. 合并排序数组 II,9. Fizz Buzz 问题。代码及思路 ——【vector用法】
昨天做链表求和用指针做到懵逼……明天清醒了再做吧……6. 合并排序数组 II题目要求合并两个排序的整数数组A和B变成一个新的数组。您在真实的面试中是否遇到过这个题? Yes样例给出A=[1,2,3,4],B=[2,4,5,6],返回 [1,2,2,3,4,4,5,6]挑战 你能否优化你的算法,如果其原创 2018-01-23 23:52:57 · 260 阅读 · 0 评论 -
LintCode【简单】53. 翻转字符串 。代码及思路
题目要求:给定一个字符串,逐个翻转字符串中的每个单词。说明单词的构成:无空格字母构成一个单词输入字符串是否包括前导或者尾随空格?可以包括,但是反转后的字符不能包括如何处理两个单词间的多个空格?在反转字符串中间空格减少到只含一个思路:刚开始没搞明白,还以为是要把每一个单词内字母的前后顺序颠倒,原来是把单词顺序颠倒啊…原创 2018-02-02 00:47:44 · 418 阅读 · 0 评论 -
LintCode【简单】82. 落单的数。代码及思路
题目要求:给出2*n + 1 个的数字,除其中一个数字之外其他每个数字均出现两次,找到这个数字。样例给出 [1,2,2,1,3,4,3],返回 4挑战 一次遍历,常数级的额外空间复杂度思路:一次遍历,但是额外的空间复杂度是O(n)。申请动态容器vector ,遍历一次A,如果A[i]和recult里有一样的,就把recult里的删掉,如果没有删掉,就加进去。最后只剩一个,return 就行了。cl...原创 2018-02-08 16:28:20 · 332 阅读 · 0 评论