leetcode
文章平均质量分 72
云一痕
这个作者很懒,什么都没留下…
展开
-
【Leetcode刷题笔记】538.二叉搜索树转为累加树
问题原题地址给定一个二叉搜索树(Binary Search Tree),把它转换成为累加树(Greater Tree),使得每个节点的值是原来的节点值加上所有大于它的节点值之和。二叉搜索树:左节点值 < 根节点值 < 右节点值用先右后左的中序遍历,依次累加就可以了。啧啧啧代码class Solution: def convertBST(self, root: TreeNode) -> TreeNode: if not root:原创 2020-09-21 16:27:11 · 104 阅读 · 0 评论 -
【Leetcode刷题笔记】78.子集
解题思路原题地址给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。画出决策树在每一层中选择当前数字,不选择当前数字,分别进入下一层。代码class Solution: def subsets(self, nums: List[int]) -> List[List[int]]: res = [] def backtrack(track, index): if in原创 2020-09-20 14:17:18 · 175 阅读 · 0 评论 -
[Leetcode刷题笔记] 47.全排列
解题思路原题地址回溯问题已经熟练起来了,掌握了套路,我这个菜鸡也能写出好算法。首先搬出回溯问题框架: def dfs(): res = [] def backtrack(track): if 结束条件: res.append() return for num in 可选项: 做选择 ba原创 2020-09-18 21:29:16 · 100 阅读 · 0 评论 -
[LeetCode刷题笔记]37.数独问题
1. 问题Leetcode原题地址一个数独的解法需遵循如下规则:数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。空白格用 '.' 表示。输入输出2.思路解数独本质上就是填入一个数字,判断是否满足条件,不行就换下一个数字。这就很像回溯问题。先搬出回溯算法框架:def func(self, nums): def backtrack(): if 结束条原创 2020-09-15 17:34:33 · 225 阅读 · 0 评论 -
[Leetcode刷题笔记] 组合总和
1. 问题Leetcode原题地址-组合1Leetcode原题地址-组合2给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。第一个问题是可以重复选取。第二个问题是每个元素只能选取一次。2.思路显然这是个回溯问题,首先把框架写出来。 def fuc(self, nums): res = [] def backtrack(nums, track, index原创 2020-09-10 13:49:26 · 203 阅读 · 0 评论 -
【leetcode刷题笔记】841.钥匙和房间
1. 问题Leetcode原题地址有 N 个房间,开始时你位于 0 号房间。每个房间有不同的号码:0,1,2,…,N-1,并且房间里可能有一些钥匙能使你进入下一个房间。如果能进入每个房间返回 true,否则返回 false。示例:2.思路用一个数组存储某个房间是否已经访问过。返回:所有房间是否均已访问class Solution: def canVisitAllRooms(self, rooms: List[List[int]]) -> bool: isvisi原创 2020-08-31 14:06:03 · 249 阅读 · 0 评论 -
【LeetCode刷题笔记】657.机器人能否返回原点
1. 问题Leetcode原题地址在二维平面上,有一个机器人从原点 (0, 0) 开始。给出它的移动顺序,判断这个机器人在完成移动后是否在 (0, 0) 处结束。移动顺序由字符串表示。字符 move[i] 表示其第 i 次移动。机器人的有效动作有 R(右),L(左),U(上)和D(下)。如果机器人在完成所有动作后返回原点,则返回 true。否则,返回 false。啧,简单题直接水一篇:class Solution: def judgeCircle(self, moves: str)原创 2020-08-28 14:35:41 · 111 阅读 · 0 评论 -
【leetcode刷题笔记】459.重复的子字符串
1. 问题Leetcode原题地址给定一个非空的字符串,判断它是否可以由它的一个子串重复多次构成。给定的字符串只含有小写英文字母,并且长度不超过10000。示例:2. 思路自己写的就是简单的思路一,列出其他思路供参考。2.1 找到子串子串最短长度为:集合的长度子串最长长度为:原字符串的一半在这个长度范围内查找:长度能被原字符串整除,得到子串个数子串*个数 == 原字符串,返回真 def repeatedSubstringPattern(self, s: str) ->原创 2020-08-24 14:01:09 · 229 阅读 · 0 评论 -
【leetcode刷题笔记】529.扫雷游戏
1. 问题Leetcode原题地址给定一个代表游戏板的二维字符矩阵。 ‘M’ 代表一个未挖出的地雷,‘E’ 代表一个未挖出的空方块,‘B’ 代表没有相邻(上,下,左,右,和所有4个对角线)地雷的已挖出的空白方块,数字(‘1’ 到 ‘8’)表示有多少地雷与这块已挖出的方块相邻,‘X’ 则表示一个已挖出的地雷。现在给出在所有未挖出的方块中(‘M’或者’E’)的下一个点击位置(行和列索引),根据以下规则,返回相应位置被点击后对应的面板:如果一个地雷(‘M’)被挖出,游戏就结束了- 把它改为 ‘X’。如原创 2020-08-20 17:36:41 · 131 阅读 · 0 评论 -
【leetcode刷题笔记】647回文子串
1. 问题Leetcode原题地址给定一个字符串,你的任务是计算这个字符串中有多少个回文子串。示例:2. 思路首先是最简单的方案,暴力两层循环,形成所有子字符串,依次判断是否回文。class Solution: def countSubstrings(self, s: str) -> int: def _is(sub_s): return sub_s == sub_s[::-1] res = 0 for i i原创 2020-08-20 13:58:00 · 156 阅读 · 0 评论 -
【leetcode刷题笔记】109-有序链表转平衡二叉树
1. 问题Leetcode原题地址给定一个单链表,其中的元素按升序排序,将其转换为高度平衡的二叉搜索树。(平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1)示例:给定的有序链表: [-10, -3, 0, 5, 9],昨天正好做了什么是平衡二叉树哈·2. 思路2.1 思路一分析一下首先,要平衡,上面长度为5的链表,先存中间的值,比它小的放左边,比它大的放右边。但是长度为10或更多肯定不能直接这么放,那一点都不平衡。由上述可推论,短序列可以按照这种方式,原创 2020-08-18 16:36:31 · 387 阅读 · 0 评论 -
【leetcode刷题笔记】110-平衡二叉树
嚯,博客这东西,真是停下来就能鸽好久。开始刷刷算法题吧就……1.平衡二叉树问题Leetcode原题地址给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点的左右两个子树的高度差的绝对值不超过1。 例如上图,左边的是平衡的,右边的不是。2.解题思路首先掌握二叉树遍历的基础,分别有如下三种形式,然后往里面套就行了。def visitTree(root: TreeNode): ...原创 2020-08-17 20:42:11 · 192 阅读 · 0 评论