摘要: 题目如下: 解题思路:和【leetcode】84. Largest Rectangle in Histogram的核心是一样的,都是要找出当前元素之前第一个大于自己的元素。 代码如下: 阅读全文
posted @ 2018-09-17 17:50 seyjs 阅读(313) 评论(0) 推荐(0) 编辑
摘要: 题目如下: 解题思路:本题对运行时间的要求比较低,我试过把遍历所有节点并且把节点的值存入数组,最后排序并取第K-1位的元素作为结果返回也能通过。我的方法是省去了最后排序的步骤,因为BST的规律就是 node.left.val < node.val < node.right.val,所以只要按照中序遍 阅读全文
posted @ 2018-09-17 17:49 seyjs 阅读(110) 评论(0) 推荐(0) 编辑
摘要: 题目如下: 解题思路:本题的思路就是解析字符串,然后是小学时候学的解方程的思想,以"2x+3x-6x+1=x+2",先把左右两边的x项和非x项进行合并,得到"-x+1=x+2",接下来就是移项,把x项移到左边,常数项移到右边,得到"2x=-1",最后的解就是x=-1/2。对于任意一个表达式ax+b 阅读全文
posted @ 2018-09-17 17:48 seyjs 阅读(268) 评论(0) 推荐(0) 编辑
摘要: 题目如下: 解题思路:本题题干中有一个非常关键的前提,就是words中的所有word的长度一样,并且都要被使用到。所以,我们可以把输入的s按word的长度进行等分,以s = "barfoothefoobarman",words = ["foo","bar"]为例,下表是等分的结果。为什么只分到sta 阅读全文
posted @ 2018-09-17 17:47 seyjs 阅读(236) 评论(0) 推荐(0) 编辑
摘要: 题目如下: 解题思路:因为本题要求的是直接在输入的数组上面修改,而且细胞的生死转换是一瞬间的事情,所以需要引入两个中间状态,待死和待活。这两个中间状态用于在四条规则判断的时候是“活”和“死”,但是呈现在最终的结果是“死”和“活”。 代码如下: 阅读全文
posted @ 2018-09-17 17:43 seyjs 阅读(182) 评论(0) 推荐(0) 编辑
摘要: 题目如下: 解题思路:本题和括号匹配问题有点像,用栈比较适合。一个元素入栈前,如果自己的状态是“start”,则直接入栈;如果是end则判断和栈顶的元素是否id相同并且状态是“start”,如果满足这两个条件,则说明这个元素和栈顶的元素是配对的,栈顶元素出栈。但是这个函数的的执行时间却不能简单的用e 阅读全文
posted @ 2018-09-17 16:43 seyjs 阅读(181) 评论(0) 推荐(0) 编辑
摘要: 题目如下: 解题思路:本题和【leetcode】75. Sort Colors类似,但是没有要求在输入数组本身修改,所以难度降低了。引入一个新的数组,然后遍历输入数组,如果数组元素是是偶数,插入到新数组头部,否则追加到尾部。 代码如下: 阅读全文
posted @ 2018-09-17 10:50 seyjs 阅读(290) 评论(0) 推荐(0) 编辑
摘要: 题目如下: 解题思路:非常简单的一个题目,创建新的树根节点newNode,然后先遍历t1,把t1复制一遍给newNode;接下来遍历t2,如果t2和newNode两者对应的相同位置的节点都存在,那么newNode对应位置的节点的值加上t2对应的值;如果newNode不存在,则创建一个和t2对应位置的 阅读全文
posted @ 2018-09-17 10:19 seyjs 阅读(134) 评论(0) 推荐(0) 编辑
摘要: 题目如下: 解题思路:本题是根据中序和后序来构建树,和【leetcode】105. Construct Binary Tree from Preorder and Inorder Traversal思路一样。只不过后序遍历的结果是根节点在后,所以依次取根节点的方法就是postorder.pop(-1 阅读全文
posted @ 2018-09-17 10:14 seyjs 阅读(121) 评论(0) 推荐(0) 编辑
摘要: 题目如下: 解题思路:根据先序和中序遍历的结果构造二叉树,这也是二叉树系列题目中的经典题型了。这种题目用递归比较简单,先序遍历是先遍历根节点,如题目用例中的3根节点,而中序遍历根节点在中间,所以以3作为分割点把中序的结果分割成[9]和[15,20,7],这两半部分分别对应根节点的左右子树,接下来再对 阅读全文
posted @ 2018-09-17 10:06 seyjs 阅读(115) 评论(0) 推荐(0) 编辑