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

浙公网安备 33010602011771号