随笔分类 -  LeetCode

摘要:[toc] 题目链接 "https://leetcode.com/problems/surrounded regions/" 注意点 边缘不算包围‘O’ 解法 解法一:dfs。找处在边缘上的 然后dfs将与之相邻的 都改为 。处理完之后再把这时候的 改为 , 改为 即可 解法二:bfs。基本上一样的 阅读全文
posted @ 2019-04-10 22:52 闽A2436 阅读(182) 评论(0) 推荐(0)
摘要:[toc] 题目链接 "Word Ladder LeetCode" 注意点 每一个变化的字母都要在wordList中 解法 解法一:bfs。类似走迷宫,有26个方向(即26个字母),起点是beginWord,终点是endWord。每一次清空完队列ret+1表示走了一步。bfs可以保证是最短路径。 c 阅读全文
posted @ 2019-04-07 23:15 闽A2436 阅读(183) 评论(0) 推荐(0)
摘要:[toc] 题目链接 "Sum Root to Leaf Numbers LeetCode" 注意点 不要访问空结点 解法 解法一:递归。sum表示从root到当前节点的值的和,ret是所有路径和。如果没有左右儿子说明是叶子节点,就把sum加到ret,否则把当前的sum 10加上自己的值。 解法二: 阅读全文
posted @ 2019-04-05 19:23 闽A2436 阅读(122) 评论(0) 推荐(0)
摘要:[toc] 题目链接 "Valid Palindrome LeetCode" 注意点 忽略大小写字母的不同 解法 解法一:i指向开头,j指向结尾,一起向中间移动,遇到大写字母就转成小写字母,遇到非字母就跳过。时间复杂度O(logn) 小结 是c++自带的用于判断是否是字母的函数 是统一处理大小写字母 阅读全文
posted @ 2019-04-03 13:40 闽A2436 阅读(145) 评论(0) 推荐(0)
摘要:[toc] 题目链接 "Best Time to Buy and Sell Stock II LeetCode" 注意点 在卖出之前必须要先购入 不限买入卖出次数 解法 解法一:因为股票的原则就是低入高出,因此从第1天开始(下标从0开始)只要当天的价格高于前一天就可以进行一次交易。遍历一趟数组就可以 阅读全文
posted @ 2019-04-02 16:06 闽A2436 阅读(116) 评论(0) 推荐(0)
摘要:[toc] 题目链接 "Best Time to Buy and Sell Stock LeetCode" 注意点 在卖出之前必须要先购入 解法 解法一:遍历一遍,随时记录当前数字之前的最小的数字。将当前数字与当前最小数字相减查看收益。时间复杂度O(n) class Solution { publi 阅读全文
posted @ 2019-04-02 14:52 闽A2436 阅读(187) 评论(0) 推荐(0)
摘要:[toc] 题目链接 "Triangle LeetCode" 注意点 树是以vector的形式给出 贪心算法只能给出局部最优解而不是全局最优解,所以要用dp算法 解法 解法一:以triangle本身为dp数组,状态转移方程为 ,而位于边界的结点则是直接加上上一层的值。 class Solution 阅读全文
posted @ 2019-04-01 20:16 闽A2436 阅读(222) 评论(0) 推荐(0)
摘要:[toc] 题目链接 "Populating Next Right Pointers in Each Node II" 注意点 不要访问空结点 不是完美二叉树 解法 解法一:递归,DFS。因为不是完美二叉树所以子树有可能残缺,故需要平行扫描父节点同层的节点,找到他们的左右子节点。然后右节点就是找到的 阅读全文
posted @ 2019-03-31 18:01 闽A2436 阅读(116) 评论(0) 推荐(0)
摘要:[toc] 题目链接 "Populating Next Right Pointers in Each Node LeetCode" 注意点 不要访问空结点 二叉树是满二叉树也就是说如果有左节点一定会有右节点 解法 解法一:递归,DFS。因为是完美二叉树所以左子结点的next指针可以直接指向其右子节点 阅读全文
posted @ 2019-03-31 17:46 闽A2436 阅读(153) 评论(0) 推荐(0)
摘要:[toc] 题目链接 "Pascal's Triangle II LeetCode" 注意点 只能使用O(k)的额外空间 有可能numRows等于0 解法 解法一:除了第一个数为1之外,后面的数都是上一次循环的数值加上它前面位置的数值之和,不停地更新每一个位置的值,便可以得到第n行的数字。 小结 阅读全文
posted @ 2019-03-30 13:19 闽A2436 阅读(91) 评论(0) 推荐(0)
摘要:[toc] 题目链接 "Pascal's Triangle LeetCode" 注意点 就是杨辉三角形 有可能numRows等于0 解法 解法一:规律是每一行的首个和结尾一个数字都是1,从第三行开始,中间的每个数字都是上一行的左右两个数字之和。掌握了之后逐层计算就好 class Solution { 阅读全文
posted @ 2019-03-29 13:33 闽A2436 阅读(107) 评论(0) 推荐(0)
摘要:[toc] 题目链接 "Flatten Binary Tree to Linked List LeetCode" 注意点 不要访问空结点 val会有负值 解法 解法一:递归,DFS。先找到最低一层的最左子节点,然后回到其父节点,把其父节点和右子节点断开,将原左子结点连上父节点的右子节点上,然后再把原 阅读全文
posted @ 2019-03-28 20:29 闽A2436 阅读(140) 评论(0) 推荐(0)
摘要:[toc] 题目链接 "Path Sum II LeetCode" 注意点 不要访问空结点 解法 解法一:递归,DFS。每当DFS搜索到新节点时,都要保存该节点。而且每当找出一条路径之后,都将这个保存为一维vector的路径保存到最终结果二维vector中。并且,每当DFS搜索到子节点,发现不是路径 阅读全文
posted @ 2019-03-27 23:39 闽A2436 阅读(102) 评论(0) 推荐(0)
摘要:[toc] 题目链接 "Path Sum LeetCode" 注意点 不要访问空结点 val会有负值 解法 解法一:递归,DFS。首先判空,若当前结点不存在,则直接返回false,如果如果输入的是一个叶节点,则比较当前叶节点的值和参数sum值是否相同,若相同,返回true,否则false。 这个条件 阅读全文
posted @ 2019-03-26 00:15 闽A2436 阅读(127) 评论(0) 推荐(0)
摘要:[toc] 题目链接 "Minimum Depth of Binary Tree LeetCode" 注意点 不要访问空结点 解法 解法一:递归,DFS。首先判空,若当前结点不存在,直接返回0。然后看若左子结点不存在,那么对右子结点调用递归函数,并加1返回。反之,若右子结点不存在,那么对左子结点调用 阅读全文
posted @ 2019-03-24 20:21 闽A2436 阅读(135) 评论(0) 推荐(0)
摘要:[toc] 题目链接 "Balanced Binary Tree LeetCode" 注意点 不要访问空结点 解法 解法一: 用于求各个点深度的,然后对每个节点的两个子树来比较深度差,时间复杂度为O(NlgN)。 小结 avl的子树高度差不超过1 阅读全文
posted @ 2019-03-23 23:54 闽A2436 阅读(122) 评论(0) 推荐(0)
摘要:[toc] 题目链接 "Convert Sorted List to Binary Search Tree LeetCode" 注意点 不要访问空结点 题目要求的是平衡二叉搜索树(也就是AVL树) 解法 解法一:递归,二叉搜索树的中序遍历结果刚好是一个有序数组,有序数组中间的数字刚好是根节点,因此可 阅读全文
posted @ 2019-03-21 23:54 闽A2436 阅读(122) 评论(0) 推荐(0)
摘要:[toc] 题目链接 "Convert Sorted Array to Binary Search Tree LeetCode" 注意点 不要访问空结点 题目要求的是平衡二叉搜索树(也就是AVL树) 解法 解法一:递归,二叉搜索树的中序遍历结果刚好是一个有序数组,有序数组中间的数字刚好是根节点,因此 阅读全文
posted @ 2019-03-20 14:46 闽A2436 阅读(94) 评论(0) 推荐(0)
摘要:[toc] 题目链接 "Binary Tree Zigzag Level Order Traversal LeetCode" 注意点 不要访问空结点 解法 解法一:递归,递归,在 "Binary Tree Level Order Traversal LeetCode" 的基础上将奇数层(下标从0开始 阅读全文
posted @ 2019-03-19 15:02 闽A2436 阅读(131) 评论(0) 推荐(0)
摘要:[toc] 题目链接 "Validate Binary Search Tree LeetCode" 注意点 不要访问空结点 结点的val有可能会正好等于int的最大取值范围 解法 解法一:因为这里的二叉搜索树定义是说重复的数字也不算,所以可以用中序遍历,然后判断是否是递增的。 解法二:利用它本身的性 阅读全文
posted @ 2019-03-18 16:47 闽A2436 阅读(102) 评论(0) 推荐(0)