recursion
我要上岸!!!
这个作者很懒,什么都没留下…
展开
-
LeetCode 206 Reverse Linked List
递归实现/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */class Solution { // recursively pub...原创 2019-03-16 14:14:33 · 56 阅读 · 0 评论 -
LeetCode 101 Symmetric Tree
思路corner case:假设根节点为null,也是true的首先判断左右子树的根节点是否值相等,若相等:需要left.left == right.right && left.right == right.left 才能为镜像树,否则为false。复杂度时间复杂度O(n), 空间复杂度O(n)[最坏情况为一条线]代码递归实现class Solution { ...原创 2019-03-17 09:50:00 · 86 阅读 · 0 评论 -
LintCode 481 Binary Tree Leaf Sum
思路一道巨简单的题目,单纯想练习一下递归。复杂度时间复杂度O(n)空间复杂度最坏情况O(n)代码/** * Definition of TreeNode: * public class TreeNode { * public int val; * public TreeNode left, right; * public TreeNode(int va...原创 2019-03-17 13:37:11 · 148 阅读 · 0 评论 -
LeetCode 366 (LintCode 650) Find Leaves of Binary Tree
思路类似与求树的高度(分治)。在每次求得当前节点的高度后,使用hashmap将结果保存下来(key=高度,value=一个list,存的是高度=key的所有节点的value)。由于使用分治法递归求树的高度的过程中,已经将每个节点的高度都求了一遍,所以在每次求得高度后将高度与节点值直接存到hashmap中,就不用对每一个节点进行一遍dfs了,保证时间复杂度为线性。代码/** * Defini...原创 2019-05-16 05:22:50 · 356 阅读 · 0 评论 -
LeetCode 285 / LintCode 448 Inorder Successor in BST
思路思路1: 直接递归寻找后继,不考虑BST的性质,当作一般的二叉树来考虑。用递归很容易实现。时间复杂度O(n),空间复杂度O(log n)(递归栈)思路2:考虑BST的性质,类似二分的思想(为了O(h)的复杂度)。每次将p与root的值进行对比:(1)p>=root, 则搜索右子树;(2)p<root, 则搜索左子树,后继存在两种可能性:root或者左子树中的某个节点。如果...原创 2019-05-13 13:25:49 · 186 阅读 · 0 评论 -
LeetCode 50 Pow(x, n)
思路快速幂。一个数的幂次可以转成二进制,从最右侧开始,遇到1就乘到结果里。基数x一直在做平方的运算。原理就是任何一个数都可以拆成1,2,4,8,…的和的形式。需要注意边界:当n小于0的时候,先把n转成-(n+1)【防止MIN_INT直接取相反数导致溢出】,然后在result开始的时候多乘一个x即可。有递归和非递归两种实现方式,代码在下面都贴出来了复杂度时间复杂度O(logn)空间复杂度O...原创 2019-08-19 11:27:02 · 67 阅读 · 0 评论 -
LintCode 596 Minimum Subtree
思路裸分治法。使用ResultType作为返回类型可以避免使用全局变量。复杂度时间复杂度O(n)空间复杂度O(logn)代码/** * Definition of TreeNode: * public class TreeNode { * public int val; * public TreeNode left, right; * public T...原创 2019-08-21 14:53:30 · 187 阅读 · 0 评论 -
LeetCode 44 Wildcard Matching
思路思路:记忆化搜索/dp,使用一个visited数组记录memo中某一个元素是否被访问过即是否被加入memo。由于可以匹配任意数量的字符(包括0个),所以(1)当pattern中当前位置pIndex处为时,有2种情况:source中匹配0个或者>=1个,对应下一个搜索状态就是(sIndex, pIndex + 1)和(sIndex + 1, pIndex),二者满足一个即可; (2)当...原创 2019-10-02 12:37:22 · 93 阅读 · 0 评论