03 2020 档案

摘要:一、题目说明 题目226. Invert Binary Tree,翻转一个二叉树。难度是Easy! 二、我的解答 这个题目,和二叉树的遍历类似。用递归方法(前、中、后序遍历,按层遍历都可以): 性能如下: 三、优化措施 非递归的算法,下面用广度优先遍历实现: 性能如下: 阅读全文
posted @ 2020-03-31 08:22 siwei718 阅读(56) 评论(0) 推荐(0) 编辑
摘要:一、题目说明 题目221. Maximal Square,给一个0和1组成的矩阵,计算包括1的最大正方形。 二、我的解答 这个题目“似曾相识”,用dp可以解决。 表示从该节点到右下角,连续正方形的边长: 性能如下: 三、优化措施 无 阅读全文
posted @ 2020-03-30 09:20 siwei718 阅读(81) 评论(0) 推荐(0) 编辑
摘要:一、题目说明 题目215. Kth Largest Element in an Array,在一个无序数组中找第k大的元素。难度是Medium! 二、我的解答 这个题目最直观的解答是,先对数组排序,然后直接返回: 性能如下: 三、优化措施 用小根堆实现,无需多言: 上面2个方法都不是最好的办法:方法 阅读全文
posted @ 2020-03-29 10:13 siwei718 阅读(81) 评论(0) 推荐(0) 编辑
摘要:一、题目说明 题目207. Course Schedule,给定n门课程,一些课程需要先修一些课程,判断能否修完所有课程。难度是Medium! 二、我的解答 这个题目是数据结构中的拓扑排序,通过栈可以实现。 性能如下: 三、优化措施 无 阅读全文
posted @ 2020-03-28 09:26 siwei718 阅读(100) 评论(0) 推荐(0) 编辑
摘要:一、题目说明 题目198. House Robber,给一列正整数表示每个房间存的金币,不能连续抢2个房间,计算可以得到的最大金币。 二、我的解答 这个题目,我列举了n=1,2,3,...5的情况,没有找到规律。后面看了解答知道了: 代码如下: 遗憾的是,超时: Time Limit Exceede 阅读全文
posted @ 2020-03-27 12:10 siwei718 阅读(103) 评论(0) 推荐(0) 编辑
摘要:一、题目说明 题目169. Majority Element,给定n个数的数组,返回出现次数超过半数的元素。 二、我的解答 这个题目用一个map,遍历一遍数组,计数每个元素出现的次数。 性能如下: 阅读全文
posted @ 2020-03-26 18:31 siwei718 阅读(118) 评论(0) 推荐(0) 编辑
摘要:一、题目说明 题目160. Intersection of Two Linked Lists,计算两个链表相连的位置。难度是Easy! 二、我的解答 这个题目,简单思考一下还是容易的。一次遍历,找到 的最后一个元素及其长度,如果 则相交。先移动长链表的指针 ,然后找到相等的位置即可。 代码如下: 性 阅读全文
posted @ 2020-03-25 20:07 siwei718 阅读(90) 评论(0) 推荐(0) 编辑
摘要:一、题目说明 题目155. Min Stack,设计一个栈,包括push, pop, top, getMin,时间复杂度要求是常数。难度是Easy! 二、我的解答 老老实实用数组实现一个栈,难度不大。关键在于overflowProcess的处理,pop的时候,计算最小值。 性能如下: 三、优化措施 阅读全文
posted @ 2020-03-24 17:35 siwei718 阅读(101) 评论(0) 推荐(0) 编辑
摘要:一、题目说明 题目152. Maximum Product Subarray,给一列整数,求最大连续子序列,其乘积最大。难度是Medium! 二、我的解答 这个题目,用双重循环就可以了。 性能如下: 三、优化措施 仔细再读读题目,一列整数,上述方法太“通用”,一次循环就可以了。 阅读全文
posted @ 2020-03-22 08:44 siwei718 阅读(113) 评论(0) 推荐(0) 编辑
摘要:一、题目说明 题目148. Sort List,对链表进行排序,时间复杂度要求是O(nlog(n)),空间复杂度要求是常量。难度是Medium! 二、我的解答 根据要求,唯一符合标准的是归并排序。 性能如下: 三、优化措施 将merge函数,修改为非递归版本: 性能如下: 阅读全文
posted @ 2020-03-21 08:08 siwei718 阅读(102) 评论(0) 推荐(0) 编辑
摘要:一、题目说明 题目146. LRU Cache,设计并实现一个LRU Cache,支持get和put操作。难度是Medium!时间复杂度要求是O(1)。 二、我的解答 时间复杂度要求是O(1),只能通过hash实现。同时要维护一个容量capacity,当capacity满的时候,更新“最近最少使用的 阅读全文
posted @ 2020-03-20 13:01 siwei718 阅读(126) 评论(0) 推荐(0) 编辑
摘要:一、题目说明 题目142. Linked List Cycle II,判断一个链表是否有环,如果有返回环的第一个元素,否则返回NULL。 这个题目是 141. Linked List Cycle 的升级版本,难度是Medium! 二、我的解答 最直观的解答就是用一个unordered_map dp来 阅读全文
posted @ 2020-03-19 20:55 siwei718 阅读(112) 评论(0) 推荐(0) 编辑
摘要:一、题目说明 题目141. Linked List Cycle,给一个链表,判断是否有环。难度是Easy! 二、我的解答 遍历链表,访问过的打上标记即可。 三、优化措施 快慢指针法,这个不破坏原链表。 阅读全文
posted @ 2020-03-16 12:28 siwei718 阅读(96) 评论(0) 推荐(0) 编辑
摘要:一、题目说明 题目139. Word Break,判断一个非空字符串是否能由字典中的字符串拼接成。难度是Medium! 二、我的解答 尽管这个题目难度是Medium,遗憾的是没做出来。 用回溯方法,从字符串s的第0个位置开始,...如果s[0]在dict中出现,继续查找。回溯法会超时的,这里用vis 阅读全文
posted @ 2020-03-15 18:02 siwei718 阅读(121) 评论(0) 推荐(0) 编辑
摘要:一、题目说明 题目138. Copy List with Random Pointer,一个链表中的节点包括一个random指针,可以指向链表中的任何节点或者空,生成该链表的一个拷贝。难度是Medium! 二、我的解答 这个题目是赋值一个链表,难度在于random链表的指向。这里用计数方式实现: 性 阅读全文
posted @ 2020-03-14 12:30 siwei718 阅读(121) 评论(0) 推荐(0) 编辑
摘要:一、题目说明 题目136. Single Number,给定一列非空整数,所有数字都出现2次,只有1个数字只出现1次,找到这个数字。 二、我的解答 这个题目,最简单的做法是排序,然后查找即可。在此,我们用 统计数量,然后找到数量是1的。 不使用额外的空间: 阅读全文
posted @ 2020-03-13 11:05 siwei718 阅读(79) 评论(0) 推荐(0) 编辑
摘要:一、题目说明 题目128. Longest Consecutive Sequence,给定一列无序的整数,计算最大连续的整数的个数。复杂度要求是O(n),难度是Hard! 二、我的解答 这个题目解答方法包括,brute force、sort、hash。但brute force和sort的复杂度不符合 阅读全文
posted @ 2020-03-12 17:57 siwei718 阅读(94) 评论(0) 推荐(0) 编辑
摘要:一、题目说明 题目124. Binary Tree Maximum Path Sum,给一个非空二叉树,求最大路径之和。 二、我的解答 这个题目,经过几个小时的思考,终于做出来了。一个树的最大路径,可能出现在“左子树”,“右子树”,或者包含“根节点”。其中dfs用来递归计算从根到叶的最大路径之和。 阅读全文
posted @ 2020-03-11 09:17 siwei718 阅读(97) 评论(0) 推荐(0) 编辑
摘要:一、题目说明 题目121. Best Time to Buy and Sell Stock,有一列数,第i个元素是第i天股票的价格,只允许一次交易(买和卖),计算如何利润最大化。难度是Easy! 二、我的解答 不动脑子,用brute force方法: 三、优化措施 一遍扫描,计算最小值,计算最大利润 阅读全文
posted @ 2020-03-10 19:24 siwei718 阅读(116) 评论(0) 推荐(0) 编辑
摘要:一、题目说明 题目114. Flatten Binary Tree to Linked List,将一个二叉树“原地”压缩为“链表”形态的二叉树。难度为Medium! 二、我的解答 这个题目如果允许使用栈的话Easy,先序遍历二叉树,右子树入栈,左子树入栈。当栈不空的时候,将栈顶元素放到右子树即可。 阅读全文
posted @ 2020-03-06 09:48 siwei718 阅读(100) 评论(0) 推荐(0) 编辑
摘要:一、题目说明 题目105. Construct Binary Tree from Preorder and Inorder Traversal,给二叉树的前序和中序遍历序列,构造一棵二叉树。题目难度是Medium! 二、我的解答 这个题目数据结构上面也有讲,这里用递归遍历算法。前序遍历第1个为树的根 阅读全文
posted @ 2020-03-05 19:56 siwei718 阅读(106) 评论(0) 推荐(0) 编辑
摘要:一、题目说明 题目104. Maximum Depth of Binary Tree,求二叉树的最大高度。难度是Easy! 二、我的解答 按层遍历二叉树,就可以计算最大深度。下面是非递归算法: 性能如下: 三、优化措施 Easy,就不优化了。 阅读全文
posted @ 2020-03-04 09:17 siwei718 阅读(88) 评论(0) 推荐(0) 编辑
摘要:一、题目说明 题目102. Binary Tree Level Order Traversal,给一个二叉树,返回按层遍历的各节点,每层返回一个数组。 二、我的解答 这个题目是普通的二叉树按层遍历,没什么难度。代码如下: 性能如下: 三、优化措施 不再做任何优化了。 阅读全文
posted @ 2020-03-03 20:06 siwei718 阅读(94) 评论(0) 推荐(0) 编辑
摘要:一、题目说明 题目101. Symmetric Tree,给定一个二叉树,判断是否对称。题目难度是Easy! 二、我的解答 这个题目不难,但是做错了2次(开始以为“前序遍历”和“后序遍历”对称即可,实际上不是)。递归方法的代码: 性能: 三、优化措施 非递归算法,需要用一个队列queue,先判断根是 阅读全文
posted @ 2020-03-02 09:05 siwei718 阅读(100) 评论(0) 推荐(0) 编辑
摘要:一、题目说明 题目98. Validate Binary Search Tree,给一个二叉树,判断是否是二叉搜索树。题目难度是Medium! 二、我的解答 这个题目,学过数据结构,会二叉树的中序遍历,不是很难。代码如下: 性能如下: 三、优化措施 上面是非递归算法,递归更简单,就不写了。 阅读全文
posted @ 2020-03-01 08:41 siwei718 阅读(93) 评论(0) 推荐(0) 编辑