摘要: 递归 思路: 递归判断根节点,左子树,右子树是否相同。 代码: # Definition for a binary tree node. # class TreeNode: # def __init__(self, x): # self.val = x # self.left = None # se 阅读全文
posted @ 2020-06-24 11:39 nil_f 阅读(209) 评论(0) 推荐(0) 编辑
摘要: 中序遍历排序 思路: ①按中序遍历树 ②确定交换的元素x,y ③再次遍历树,改变对应节点的值 代码: # Definition for a binary tree node. # class TreeNode: # def __init__(self, val=0, left=None, right 阅读全文
posted @ 2020-06-24 11:29 nil_f 阅读(147) 评论(0) 推荐(0) 编辑
摘要: 递归 思路: 设计一个递归函数helper(root,lower,upper),判断以root为根节点,左右子树的值是否在在区间(lower,upper)之间,如果不在返回False。如果左子树在区间内,则更新右边界为左子树的val,继续递归helper判断。如果右子树在区间内,则更新左边界为右子树 阅读全文
posted @ 2020-06-22 15:39 nil_f 阅读(123) 评论(0) 推荐(0) 编辑
摘要: 动态规划 思路: 用dp[i][j]表示s1前 i 个字符和s2前j个字符,能否匹配s3前i+j个字符。 dp[0][0] = True 当i=0时,只需要看s2的前j个字符是否依次和s3的前j个字符匹配,即dp[0][j] = dp[0][j-1] and s2[j-1] == s3[j-1] 当 阅读全文
posted @ 2020-06-22 14:31 nil_f 阅读(207) 评论(0) 推荐(0) 编辑
摘要: 动态规划 思路: 用G(n)来表示长度为n的序列的不同二叉搜索树个数,当n=0时,只能构成空树这一种情况,即G(0)=1;当n=1时,只能构成一个只有根节点的树这一种情况,即G(1)=1。 给定序列1.....n,可以选出数字 i 作为根,1.....(i-1)序列为其左子树,(i+1)....n序 阅读全文
posted @ 2020-06-21 15:39 nil_f 阅读(106) 评论(0) 推荐(0) 编辑
摘要: 递归 思路: 按照96. 不同的二叉搜索树方式,从1..n中取出数字i,作为当前树的树根,1..i-1作为左子树,i+1....n作为右子树,会产生G(i-1)种左子树,G(n-i)种右子树,对1...i-1和i+1...n重复上述过程构建所有的左右子树,最后对将左右子树接入到根节点上即可。 例如: 阅读全文
posted @ 2020-06-21 15:10 nil_f 阅读(104) 评论(0) 推荐(0) 编辑
摘要: 递归 思路: 先遍历左子树,再访问根节点,再遍历右子树。 代码: # Definition for a binary tree node. # class TreeNode: # def __init__(self, x): # self.val = x # self.left = None # s 阅读全文
posted @ 2020-06-20 10:55 nil_f 阅读(174) 评论(0) 推荐(1) 编辑
摘要: 回溯法 思路: dfs,深度优先搜索。 代码: class Solution: def restoreIpAddresses(self, s: str) -> List[str]: def valid(segment): return int(segment) <= 255 if segment[0 阅读全文
posted @ 2020-06-19 19:07 nil_f 阅读(147) 评论(0) 推荐(0) 编辑
摘要: 双指针遍历反转 思路: ①创建cur,pre指针分别指向当前节点和当前节点的前一节点。 ②遍历链表直到cur指向要翻转链表的起始位置,此时cur所指向的节点将会是翻转后链表的最后一个节点,pre所指向的节点的下一个节点应该是翻转后链表的第一个节点,我们用tail和con记录下当前cur和pre的节点 阅读全文
posted @ 2020-06-19 16:50 nil_f 阅读(99) 评论(0) 推荐(0) 编辑
摘要: 动态规划 思路: 用dp[i]表示s从0到下标i的子串的解码总数。下面分情况讨论: 如果字符串为空或者首字符为‘0’,则直接返回0 如果首字符s[0]不为0,则dp[0] = 1 dp[0]=1的情况下: 若s[1] == '0',那么s[0]=='1'或者s[1]=='2'时,dp[1] = 1, 阅读全文
posted @ 2020-06-18 12:40 nil_f 阅读(152) 评论(0) 推荐(0) 编辑