随笔分类 -  leetcode

摘要:题目描述 给出一棵树的前序遍历和中序遍历,请构造这颗二叉树 注意: 可以假设树中不存在重复的节点 题目分析: 这道题和leetcode 43:construct-binary-tree-from-inorder-and-postorder简直一模一样的,只是后续遍历换成了前序遍历,前序遍历的特点就是 阅读全文
posted @ 2020-08-16 14:38 请叫我小小兽 阅读(159) 评论(0) 推荐(0)
摘要:题目描述 给出一棵树的中序遍历和后序遍历,请构造这颗二叉树 注意: 保证给出的树中不存在重复的节点 题目分析: 这道题是常规题,中序遍历,根节点在最中间,后序遍历的最后一个节点是根节点,根据根节点的值获得在左右中序遍历结果和左右后续遍历的结果,然后重复此过程建立起二叉树。 代码如下: 1 TreeN 阅读全文
posted @ 2020-08-16 14:35 请叫我小小兽 阅读(160) 评论(0) 推荐(0)
摘要:题目描述 给定一个二叉树,返回该二叉树由底层到顶层的层序遍历,(从左向右,从叶子节点到根节点,一层一层的遍历) 例如: 给定的二叉树是{3,9,20,#,#,15,7}, 3↵ / ↵ 9 20↵ / ↵ 15 7 该二叉树由底层到顶层层序遍历的结果是 [↵ [15,7]↵ [9,20],↵ [3] 阅读全文
posted @ 2020-08-16 14:31 请叫我小小兽 阅读(117) 评论(0) 推荐(0)
摘要:题目描述 给定一个二叉树和一个值 sum\ sum sum,判断是否有从根节点到叶子节点的节点值之和等于 sum\ sum sum 的路径, 例如: 给出如下的二叉树, sum=22\ sum=22 sum=22, 返回true,因为存在一条路径 5→4→11→25\to 4\to 11\to 25 阅读全文
posted @ 2020-08-16 14:28 请叫我小小兽 阅读(185) 评论(0) 推荐(0)
摘要:题目描述 给定一个二叉树和一个值 sum\ sum sum,请找出所有的根节点到叶子节点的节点值之和等于 sum\ sum sum 的路径, 例如: 给出如下的二叉树, sum=22\ sum=22 sum=22, 返回 [ [5,4,11,2], [5,8,9] ] 题目分析:这道题和leetco 阅读全文
posted @ 2020-08-16 14:25 请叫我小小兽 阅读(210) 评论(0) 推荐(0)
摘要:给出一个值numRows,生成杨辉三角的前numRows行 例如,给出 numRows = 5, 返回 [↵ [1],↵ [1,1],↵ [1,2,1],↵ [1,3,3,1],↵ [1,4,6,4,1]↵] 题目分析: 这道题其实和上道题leetcode 32:pascals-triangle-i 阅读全文
posted @ 2020-08-16 14:21 请叫我小小兽 阅读(193) 评论(0) 推荐(0)
摘要:题目描述 给出一个索引k,返回杨辉三角的第k行 例如,k=3, 返回[1,3,3,1]. 备注: 你能将你的算法优化到只使用O(k)的额外空间吗? 代码如下: 1 vector<int> getRow(int rowIndex) { 2 vector<int> dp(rowIndex + 1,0); 阅读全文
posted @ 2020-08-16 14:18 请叫我小小兽 阅读(85) 评论(0) 推荐(0)
摘要:题目描述 给出一个三角形,计算从三角形顶部到底部的最小路径和,每一步都可以移动到下面一行相邻的数字, 例如,给出的三角形如下: [↵ [2],↵ [3,4],↵ [6,5,7],↵ [4,1,8,3]↵] 最小的从顶部到底部的路径和是2 + 3 + 5 + 1 = 11。 注意: 如果你能只用O(N 阅读全文
posted @ 2020-08-16 14:17 请叫我小小兽 阅读(205) 评论(0) 推荐(0)
摘要:题目描述 给定一个无序的整数类型数组,求最长的连续元素序列的长度。 例如: 给出的数组为[100, 4, 200, 1, 3, 2], 最长的连续元素序列为[1, 2, 3, 4]. 返回这个序列的长度:4 你需要给出时间复杂度在O(n)之内的算法 题目分析: set会给放入的数组去重,本题是根据s 阅读全文
posted @ 2020-08-16 14:10 请叫我小小兽 阅读(158) 评论(0) 推荐(0)
摘要:题目描述 给定一个仅包含数字 0−9\ 0-9 0−9 的二叉树,每一条从根节点到叶子节点的路径都可以用一个数字表示。 例如根节点到叶子节点的一条路径是1→2→31\to 2\to 31→2→3,那么这条路径就用 123\ 123 123 来代替。 找出根节点到叶子节点的所有路径表示的数字之和 例如 阅读全文
posted @ 2020-08-16 14:03 请叫我小小兽 阅读(259) 评论(0) 推荐(0)
摘要:题目描述 环形路上有n个加油站,第i个加油站的汽油量是gas[i]. 你有一辆车,车的油箱可以无限装汽油。从加油站i走到下一个加油站(i+1)花费的油量是cost[i],你从一个加油站出发,刚开始的时候油箱里面没有汽油。 求从哪个加油站出发可以在环形路上走一圈。返回加油站的下标,如果没有答案的话返回 阅读全文
posted @ 2020-08-16 13:58 请叫我小小兽 阅读(202) 评论(0) 推荐(0)
摘要:题目描述 现在有一个这样的链表:链表的每一个节点都附加了一个随机指针,随机指针可能指向链表中的任意一个节点或者指向空。 请对这个链表进行深拷贝。 题目分析: 如果要做到深拷贝,分一下三个步骤:1.分别创建新链表的节点,插入到旧表中 2.根据旧表中的节点复制随机指针 3.剥离旧表和新表,返回新表的头结 阅读全文
posted @ 2020-08-13 14:48 请叫我小小兽 阅读(238) 评论(0) 推荐(0)
摘要:题目描述 对于一个给定的链表,返回环的入口节点,如果没有环,返回null 拓展: 你能给出不利用额外空间的解法么? 题目分析: 这属于常规问题,利用快慢指针获取环的入口节点。 代码如下: 1 ListNode *detectCycle(ListNode *head) { 2 if(head == n 阅读全文
posted @ 2020-08-13 14:41 请叫我小小兽 阅读(105) 评论(0) 推荐(0)
摘要:题目描述 求给定的二叉树的后序遍历。 例如: 给定的二叉树为{1,#,2,3}, 1↵ ↵ 2↵ /↵ 3↵ 返回[3,2,1]. 备注;用递归来解这道题太没有新意了,可以给出迭代的解法么? 题目分析: 这道题属于常规题,就不讲了。 代码如下: 1 vector<int> postorderTrav 阅读全文
posted @ 2020-08-13 14:36 请叫我小小兽 阅读(161) 评论(0) 推荐(0)
摘要:题目描述 将给出的整数x翻转。 例1:x=123,返回321 例2:x=-123,返回-321 你有思考过下面的这些问题么? 如果整数的最后一位是0,那么输出应该是什么?比如10,100 你注意到翻转后的整数可能溢出吗?假设输入是32位整数,则将翻转10000000003就会溢出,你该怎么处理这样的 阅读全文
posted @ 2020-08-12 14:32 请叫我小小兽 阅读(192) 评论(0) 推荐(0)
摘要:题目描述 在不使用额外的内存空间的条件下判断一个整数是否是回文数字 提示: 负整数可以是回文吗?(比如-1) 如果你在考虑将数字转化为字符串的话,请注意一下不能使用额外空间的限制 你可以将整数翻转。但是,如果你做过题目 反转数字 你会知道将整数翻转可能会出现溢出的情况,你怎么处理这个问题? 题目分析 阅读全文
posted @ 2020-08-12 14:27 请叫我小小兽 阅读(77) 评论(0) 推荐(0)
摘要:题目描述 给定n个非负整数a1,a2,…,an,其中每个数字表示坐标(i, ai)处的一个点。以(i,ai)和(i,0)(i=1,2,3...n)为端点画出n条直线。你可以从中选择两条线与x轴一起构成一个容器,最大的容器能装多少水? 注意:你不能倾斜容器 例如: 输入 [1,8,6,2,5,4,8, 阅读全文
posted @ 2020-08-12 14:02 请叫我小小兽 阅读(128) 评论(0) 推荐(0)
摘要:按我的看法来说这两个题实在没啥意思,所以写一块了。需要了解一下罗马数字和整数之间的转换规则即可。 leetcode 136: 题目描述 请将给出的罗马数字转化为整数 保证输入的数字范围在1 到 3999之间。 代码如下: 1 int romanToInt(string s) { 2 std::map 阅读全文
posted @ 2020-08-12 13:54 请叫我小小兽 阅读(181) 评论(0) 推荐(0)
摘要:题目描述 给定一个数组和一个值,使用就地算法将数组中所有等于这个值的元素删除,并返回新数组的长度。 元素的顺序可以更改。你不用去关心大于当前数组长度的空间里面存储的值 题目分析: 返回只需要返回新数组的长度,并且元素顺序可以改变,因此如果数组中的值等于elem,可以替换成任何值,数组长度要减一。 代 阅读全文
posted @ 2020-08-12 13:46 请叫我小小兽 阅读(102) 评论(0) 推荐(0)
摘要:题目描述 给出一个用二维矩阵表示的图像 返回该图像顺时针旋转90度的结果 扩展: 你能使用原地算法解决这个问题么? 题目分析: 可以将矩阵先通过右上左下对角线翻转,再沿水平线上下翻转。如下图所示: 代码如下: 1 void rotate(vector<vector<int> > &matrix) { 阅读全文
posted @ 2020-08-12 13:40 请叫我小小兽 阅读(210) 评论(0) 推荐(0)