leetcode
文章平均质量分 64
请叫我哈士奇
这个作者很懒,什么都没留下…
展开
-
LC-2217找到指定长度的回文数
LC-2217找到指定长度的回文数这道题是一个找规律的题型,仔细观察可以发现示例中输出的中间的数字貌似和上面的queries的数字有关系,例如1 - 101、2-111,可以发现输出的中间的数字和queries对应的差一。再观察第二个示例,这时验证了上面的想法,同时想到需要将输出拆成一般来对应,这样就更好找到相应的关系了,即11, 13, 15 分别对应了2, 4, 6,可以看到后面的个位数(没拆开时中间的数字)是相差1。但是因为0不能当做前导,所以queries大于中间所能表示的数字时,例如三位回文数原创 2022-04-14 10:44:24 · 130 阅读 · 0 评论 -
LC-257. 二叉树的所有路径
LC-257. 二叉树的所有路径递归法这道题是一个简单题,虽然经过一番思考做了上来,但是确实是思维不清晰,所以还是要总结一下。这道题是记录根节点到叶子节点的路径,最重要的是想明白返回条件。这道题是记录到叶子节点,自然是只有到叶子节点的时候,才会返回,也就是说左右子树都不存在的时候 not root.left and not root.right。不要对本层节点进行判断,那样会导致对叶子节点的左右子树判断,最后会同一个路径会添加两次。这道题我采用的时先序遍历,体现在最开始遍历的时候就先把ro原创 2022-04-14 10:43:51 · 113 阅读 · 0 评论 -
LC-106. 从中序与后序遍历序列构造二叉树
LC-106. 从中序与后序遍历序列构造二叉树根据两个顺序构造唯一二叉树的原理:以后序数列的最后一个元素为切割点,先切中序数组,根据中序数组反过来切后序数组。一层一层的切下去,最每次后序数组最后一个元素就是节点元素。来看一下一共分几步:第一步:如果数组大小为零的话,说明是空节点了。第二步:如果不为空,那么取后序数组最后一个元素作为节点元素。第三步:找到后序数组最后一个元素在中序数组的位置,作为切割点第四步:切割中序数组,切成中序左数组和中序右数组 (顺序别搞反了,一定是先切中序数组)第五原创 2022-04-14 10:43:24 · 496 阅读 · 0 评论 -
LC-104.二叉树的最大深度
LC-104.二叉树的最大深度这道题是一道简单题,可以使用递归法和迭代法进行求解。迭代法迭代法最好就使用队列进行层序遍历,这样每遍历一层,深度+1:class Solution: def maxDepth(self, root: Optional[TreeNode]) -> int: if not root: return 0 depth = 0 from collections import deque原创 2022-04-14 10:42:27 · 404 阅读 · 0 评论 -
LC-102.二叉树的层序遍历
LC-102.二叉树的层序遍历这道题常规做法是使用队列,按层进行遍历,参考队列方案。但是也可以使用递归的方式。在递归过程中,其实递归的本质没有改变,只是正常的递归,但是在递归的过程中,进行如下操作:根据题意,res一定是一个二维的列表,并且每一个list代表一层。递归的时候,一定是先进入左子树,再右子树,因为是从左到右的层序遍历。l_depth = res[depth]这个维度代表第depth层的节点,那只要在遍历的过程中利用depth作为索引找到这个list,然后依次从左到右的添加进去就好啦。原创 2022-04-14 10:41:46 · 356 阅读 · 0 评论 -
LC-101.对称二叉树
LC-101.对称二叉树递归法使用递归的时候,主要思想是将根节点下面左右子树分别同时递归,然后在递归过程中进行比较,需要注意的时,比较的时候,应该是同层的 n1.left 和 n2.right 以及 n1.right 和 n2.left 进行比较,最后如果这两个比较同时为True,那么该层的递归返回True。(这里之所以这样比较,是因为这是判断中心轴对称问题)按照递归三部曲确定递归函数的参数和返回值这里比较根节点的两个子树,所以输入函数的应该是两个子树。返回值,就是是否该层递归比较的结果原创 2022-04-14 10:41:13 · 629 阅读 · 0 评论 -
LC-2217.找到指定长度的回文数
LC-2217.找到指定长度的回文数这道题是一个找规律的题型,仔细观察可以发现示例中输出的中间的数字貌似和上面的queries的数字有关系,例如1 - 101、2-111,可以发现输出的中间的数字和queries对应的差一。再观察第二个示例,这时验证了上面的想法,同时想到需要将输出拆成一般来对应,这样就更好找到相应的关系了,即11, 13, 15 分别对应了2, 4, 6,可以看到后面的个位数(没拆开时中间的数字)是相差1。但是因为0不能当做前导,所以queries大于中间所能表示的数字时,例如三位回文原创 2022-04-14 10:40:21 · 118 阅读 · 0 评论 -
LC-617.合并二叉树
LC-617.合并二叉树递归(先序遍历)变量三步走:确定递归函数的参数和返回值:要合并两个二叉树,所以参数至少传入两个二叉树的根节点,然后返回值就是合并后二叉树的根节点。确定终止条件:这里我先给出一个便于理解的版本如果两个根节点都不存在,那么 return None如果 root1 不存在,那么直接返回 root2。这里和链表差不多,一个短的链表被遍历完了,长的链表直接接上就行了,不需要再遍历了,同上,如果 root2 不存在,那么直接返回 root1if not root1原创 2022-04-14 10:33:50 · 123 阅读 · 0 评论