![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
leetcode
michael - z
这个作者很懒,什么都没留下…
展开
-
153. 寻找旋转排序数组中的最小值
文章目录题目描述解题思路代码实现153. 寻找旋转排序数组中的最小值题目描述解题思路还是二分查找,在常规二分查找中,序列有序,在此题中分段有序。如果以中点为分割点,一定有一半是有序的,据此可以判断最小值点的区间。代码实现class Solution: def findMin(self, nums: List[int]) -> int: low, high = 0, len(nums) - 1 while low < high:原创 2021-09-26 21:01:59 · 117 阅读 · 0 评论 -
34. 在排序数组中查找元素的第一个和最后一个位置
文章目录题目描述解题思路代码实现34. 在排序数组中查找元素的第一个和最后一个位置题目描述解题思路本质是查找有序数组中目标值的左右边界。左右边界的查找参考东哥详解。代码实现class Solution: def searchRange(self, nums: List[int], target: int) -> List[int]: res = [-1, -1] if not nums: return res原创 2021-09-14 21:13:06 · 101 阅读 · 0 评论 -
69. x 的平方根
文章目录题目描述解题思路代码实现69. x 的平方根题目描述解题思路二分法查找代码实现class Solution: def mySqrt(self, x: int) -> int: low, high = 0, x while low <= high: mid = low + (high - low) // 2 mid2 = mid ** 2 # 向下取整,第一个小于原创 2021-09-14 21:01:31 · 98 阅读 · 0 评论 -
524. 通过删除字母匹配到字典里最长单词
文章目录题目描述解题思路代码实现524. 通过删除字母匹配到字典里最长单词题目描述解题思路双指针一次判断数组中的单词是否匹配,满足时只有长度更长或通长度字典序更小才更新答案。代码实现class Solution: def findLongestWord(self, s: str, dictionary: List[str]) -> str: # dictionary = sorted(dictionary) res = ""原创 2021-09-13 21:28:10 · 92 阅读 · 0 评论 -
125. 验证回文串
文章目录题目描述解题思路代码实现125. 验证回文串题目描述解题思路双指针,初始分别指向首和尾,当左右指针指向字符相同时,更新左右指针;当不相同时,不可能是回文串。代码实现class Solution: def isPalindrome(self, s: str) -> bool: ss = "".join(ch.lower() for ch in s if ch.isalnum()) start, end = 0, len(ss) - 1原创 2021-09-13 20:41:28 · 69 阅读 · 0 评论 -
680. 验证回文字符串 Ⅱ
文章目录题目描述解题思路代码实现680. 验证回文字符串 Ⅱ题目描述解题思路双指针,初始分别指向首和尾,当左右指针指向字符相同时,更新左右指针;当不相同时,删除左指针或右指针,删除后两个有一个是回文串即可。代码实现class Solution: def validPalindrome(self, s: str) -> bool: def isPalindrome(s: str): start, end = 0, len(s) - 1原创 2021-09-13 20:32:19 · 80 阅读 · 0 评论 -
633. 平方数之和
文章目录题目描述解题思路代码实现633. 平方数之和题目描述解题思路双指针。这里需要注意结束位置,因为math.sqrt© ** 2 >= c,所以结束位置可以提前,不需要从c开始代码实现class Solution: def judgeSquareSum(self, c: int) -> bool: start = 0 # end = int(math.sqrt(c)) end = math.ceil(math.sqrt(c原创 2021-09-09 21:09:13 · 80 阅读 · 0 评论 -
142. 环形链表 II
文章目录题目描述代码实现参考文献142. 环形链表 II题目描述代码实现# Definition for singly-linked list.# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solution: def detectCycle(self, head: ListNode) -> ListNode:原创 2021-09-09 20:12:17 · 62 阅读 · 0 评论 -
88. 合并两个有序数组
文章目录题目描述解题思路代码实现88. 合并两个有序数组题目描述解题思路从末尾开始比较代码实现class Solution: def merge(self, nums1: List[int], m: int, nums2: List[int], n: int) -> None: """ Do not return anything, modify nums1 in-place instead. 从num1末尾开始比较原创 2021-09-08 22:15:26 · 78 阅读 · 0 评论 -
167. 两数之和 II - 输入有序数组
文章目录题目描述解题思路代码实现167. 两数之和 II - 输入有序数组题目描述解题思路双指针,两边移动。代码实现class Solution: def twoSum(self, numbers: List[int], target: int) -> List[int]: head, tail = 0, len(numbers) - 1 while head < tail: s = numbers[head] + n原创 2021-09-08 21:52:42 · 45 阅读 · 0 评论 -
122. 买卖股票的最佳时机 II
文章目录题目描述代码实现122. 买卖股票的最佳时机 II题目描述代码实现class Solution: def maxProfit(self, prices: List[int]) -> int: """ 只要股票当天较前一天在上涨,就可以做交易以获得最大利润 """ profit = 0 for i in range(1, len(prices)): if prices[i] > p原创 2021-09-08 07:17:28 · 143 阅读 · 0 评论 -
763. 划分字母区间
文章目录题目描述代码实现参考文献763. 划分字母区间题目描述代码实现class Solution: def partitionLabels(self, s: str) -> List[int]: # 获取每个字母最后结束的位置 last = [0] * 26 for i, ch in enumerate(s): last[ord(ch) - ord("a")] = i prt = []原创 2021-09-07 21:11:56 · 71 阅读 · 0 评论 -
452. 用最少数量的箭引爆气球
文章目录题目描述代码实现参考文献452. 用最少数量的箭引爆气球题目描述代码实现class Solution: def findMinArrowShots(self, points: List[List[int]]) -> int: points.sort(key=lambda x: x[0]) res = 1 for i in range(1, len(points)): if points[i][0] >原创 2021-09-07 20:39:00 · 68 阅读 · 0 评论 -
605. 种花问题
文章目录题目描述解题思路代码实现参考文献605. 种花问题题目描述解题思路首尾添加占位符,不用再分情况区分。满足条件即可种花。代码实现class Solution: def canPlaceFlowers(self, flowerbed: List[int], n: int) -> bool: cnt = 0 arr = [0] + flowerbed + [0] for i in range(1, len(arr) -1):原创 2021-09-07 07:57:46 · 94 阅读 · 0 评论 -
435. 无重叠区间
文章目录题目描述解题思路代码实现参考文献435. 无重叠区间题目描述解题思路求最少的移除区间个数,等价于尽量多保留不重叠的区间。在选择要保留区间时,区间的结尾十分重要:选择的区间结尾越小,余留给其它区间的空间就越大,就越能保留更多的区间。因此,采取的贪心策略为:优先保留结尾小且不相交的区间。代码实现class Solution: def eraseOverlapIntervals(self, intervals: List[List[int]]) -> int:原创 2021-09-06 20:48:07 · 109 阅读 · 0 评论 -
135. 分发糖果
文章目录题目描述解题思路代码实现参考文献135. 分发糖果题目描述解题思路贪心策略:两遍遍历。每次遍历,只考虑并更新相邻一侧的大小关系代码实现class Solution: def candy(self, ratings: List[int]) -> int: size = len(ratings) can = [1] * size # 从左往右遍历,如果右边孩子的评分比左边的高,则右边孩子的糖果数更新为左边孩子的糖果数加 1原创 2021-09-06 07:44:07 · 62 阅读 · 0 评论 -
455. 分发饼干
文章目录题目描述解题思路代码实现参考文献455. 分发饼干题目描述解题思路贪心策略:给剩余孩子里最小饥饿度的孩子分配最小的能饱腹的饼干。实现时因为需要获得大小关系,所以需要把孩子和饼干分别排序。这样就可以从饥饿度最小的孩子和饼干数最少出发,计算有多少个对可以满足条件。代码实现class Solution: def findContentChildren(self, g: List[int], s: List[int]) -> int: g = sorted(g原创 2021-09-03 07:32:46 · 152 阅读 · 0 评论 -
919. 完全二叉树插入器
文章目录题目描述解题思路代码实现参考文献919. 完全二叉树插入器题目描述解题思路1、思考二叉树节点在数组中的位置关系代码实现class CBTInserter: def __init__(self, root: TreeNode): self.node_arr = [None] def helper(root): if not root: return self.no原创 2021-08-11 07:58:32 · 97 阅读 · 0 评论 -
1110. 删点成林
文章目录题目描述解题思路代码实现参考文献1110. 删点成林题目描述解题思路1、利用树中删除节点思想2、删除钱记录左右子树代码实现class Solution: def delNodes(self, root: TreeNode, to_delete: List[int]) -> List[TreeNode]: self.forest = [] def dfs_delete(root: TreeNode, to_delete: List[int]原创 2021-07-27 21:00:39 · 110 阅读 · 0 评论 -
剑指 Offer 36. 二叉搜索树与双向链表
文章目录题目描述解题思路代码实现参考文献剑指 Offer 36. 二叉搜索树与双向链表题目描述解题思路1、利用二叉搜索树BST性质中序遍历有序;2、因为要建立双向链表,所以需要记录前驱节点代码实现class Solution: def treeToDoublyList(self, root: 'Node') -> 'Node': if not root: return self.pre = None原创 2021-07-27 07:51:55 · 98 阅读 · 0 评论 -
1382. 将二叉搜索树变平衡
文章目录题目描述解题思路代码实现参考文献1382. 将二叉搜索树变平衡题目描述解题思路本题利用二叉搜索树BST性质中序遍历有序,然后二分法建一颗平衡二叉树代码实现class Solution: def balanceBST(self, root: TreeNode) -> TreeNode: self.arr = [] def inorder(root: TreeNode) -> None: if not root:原创 2021-07-27 07:24:44 · 88 阅读 · 0 评论 -
341. 扁平化嵌套列表迭代器
文章目录题目描述解题思路代码实现参考文献341. 扁平化嵌套列表迭代器题目描述解题思路方法一:遍历所有元素,存在列表中。这种方法不是最优解。代码实现# """# This is the interface that allows for creating nested lists.# You should not implement it, or speculate about its implementation# """#class NestedInteger:# d原创 2021-07-21 07:48:08 · 73 阅读 · 0 评论 -
109. 有序链表转换二叉搜索树
文章目录题目描述解题思路代码实现参考文献109. 有序链表转换二叉搜索树题目描述解题思路1、利用快慢指针找到链表的中点代码实现class Solution: def sortedListToBST(self, head: ListNode) -> TreeNode: def get_median(left: ListNode, right: ListNode) -> TreeNode: fast = slow = left原创 2021-06-27 10:49:39 · 83 阅读 · 0 评论 -
1600. 皇位继承顺序
文章目录题目描述解题思路代码实现参考文献1600. 皇位继承顺序题目描述解题思路1、哈希表保存父子间的关系2、保存死亡名单3、前序遍历多叉树获取继承顺序并排除已死亡人员代码实现class ThroneInheritance: def __init__(self, kingName: str): self.king = kingName self.deathed = set() self.nodes = defaultdict(lis原创 2021-06-23 08:19:16 · 156 阅读 · 0 评论 -
99. 恢复二叉搜索树
文章目录题目描述解题思路代码实现参考文献99. 恢复二叉搜索树题目描述解题思路根据题意,中序遍历找到第一个升序顺序错乱最大值节点,和最后一个升序顺序错乱的最小值节点。然后交换两个节点val即可。代码实现class Solution: def recoverTree(self, root: TreeNode) -> None: """ Do not return anything, modify root in-place instead.原创 2021-06-18 08:06:47 · 82 阅读 · 0 评论 -
1457. 二叉树中的伪回文路径
文章目录题目描述解题思路代码实现参考文献1457. 二叉树中的伪回文路径题目描述解题思路1、二叉树前序遍历2、位运算代码实现class Solution: def pseudoPalindromicPaths (self, root: TreeNode) -> int: if not root: return 0 self.res = 0 def pre_order(root: TreeNode, num:原创 2021-06-17 08:15:14 · 85 阅读 · 0 评论 -
951. 翻转等价二叉树
文章目录题目描述解题思路代码实现参考951. 翻转等价二叉树题目描述解题思路1、flipEquiv()判断两颗树是否相等2、root1, root2都为空,看左右子树;3、root1, root2有一个为空或值不等,不相等代码实现class Solution: def flipEquiv(self, root1: TreeNode, root2: TreeNode) -> bool: if not root1 and not root2:原创 2021-06-15 07:50:17 · 126 阅读 · 1 评论 -
1026. 节点与其祖先之间的最大差值
文章目录题目描述解题思路代码实现1026. 节点与其祖先之间的最大差值题目描述解题思路回溯法max_val, min_val记录子树到叶子节点最大、最小值叶子节点计算最大差值代码实现# Definition for a binary tree node.# class TreeNode:# def __init__(self, val=0, left=None, right=None):# self.val = val# self.left原创 2021-06-13 07:50:25 · 136 阅读 · 0 评论 -
1123. 最深叶节点的最近公共祖先
文章目录题目描述解题思路代码实现参考1123. 最深叶节点的最近公共祖先题目描述解题思路如果当前节点是最深叶子节点的最近公共祖先,那么它的左右子树的高度一定是相等的,否则高度低的那个子树的叶子节点深度一定比另一个子树的叶子节点的深度小,因此不满足条件。所以只需要dfs遍历找到左右子树高度相等的根节点即出答案。代码实现# Definition for a binary tree node.# class TreeNode:# def __init__(self, val=0, lef原创 2021-06-11 07:47:55 · 106 阅读 · 0 评论 -
814. 二叉树剪枝
文章目录题目描述解题思路代码实现参考814. 二叉树剪枝题目描述解题思路1、树的剪枝代码实现# Definition for a binary tree node.# class TreeNode:# def __init__(self, val=0, left=None, right=None):# self.val = val# self.left = left# self.right = rightclass Solut原创 2021-06-10 08:10:17 · 139 阅读 · 0 评论 -
979. 在二叉树中分配硬币
文章目录题目描述代码实现参考979. 在二叉树中分配硬币题目描述代码实现# Definition for a binary tree node.# class TreeNode:# def __init__(self, val=0, left=None, right=None):# self.val = val# self.left = left# self.right = rightclass Solution: def原创 2021-06-09 08:21:07 · 114 阅读 · 0 评论 -
1448. 统计二叉树中好节点的数目
文章目录题目描述解题思路代码实现参考1448. 统计二叉树中好节点的数目题目描述解题思路1、方法一:先序遍历,max_val:截止到当前节点前的路径中的最大值2、方法二:回溯法代码实现# Definition for a binary tree node.# class TreeNode:# def __init__(self, val=0, left=None, right=None):# self.val = val# self.left原创 2021-06-08 08:12:50 · 93 阅读 · 0 评论 -
1104. 二叉树寻路
文章目录题目描述解题思路代码实现参考1104. 二叉树寻路题目描述解题思路因为以1为根节点层次编号的满二叉树可以对应到位的表示,所以用位运算的思路即可。因为每层的顺序在变,所以每次需要对首位外的其它位取反。举例14=1110b,先将14右移,变为111b,然后对除第一位外所有位取反变为100b,即它的根节点4,同理100b,右移变为10b,对除第一位外所有位取反变为11b,即它的根节点3一直到1结束。代码实现class Solution: def pathInZigZag原创 2021-06-04 08:10:08 · 85 阅读 · 0 评论 -
面试题 04.10.检查子树
文章目录题目描述代码实现参考面试题 04.10.检查子树题目描述代码实现# Definition for a binary tree node.# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.right = Noneclass Solution: def checkSubTree(self, t1: TreeN原创 2021-06-01 08:09:12 · 100 阅读 · 0 评论 -
1325. 删除给定值的叶子节点
文章目录题目描述解题思路代码实现参考1325. 删除给定值的叶子节点题目描述解题思路1、不要问为什么。递归代码实现# Definition for a binary tree node.# class TreeNode:# def __init__(self, val=0, left=None, right=None):# self.val = val# self.left = left# self.right = right原创 2021-05-31 08:16:11 · 158 阅读 · 0 评论 -
1261. 在受污染的二叉树中查找元素
文章目录题目描述解题思路代码实现参考1261. 在受污染的二叉树中查找元素题目描述解题思路1、重建跟二叉树遍历思路一样2、查找过程这里是直接存下载,在参考中还有更好的方案代码实现# Definition for a binary tree node.# class TreeNode:# def __init__(self, val=0, left=None, right=None):# self.val = val# self.left = l原创 2021-05-26 08:23:12 · 96 阅读 · 0 评论 -
1305. 两棵二叉搜索树中的所有元素
文章目录题目描述解题思路代码实现1305. 两棵二叉搜索树中的所有元素题目描述解题思路二叉搜索树中序遍历 + 归并排序中合并有序列表代码实现# Definition for a binary tree node.# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.right = Noneclass Solution:原创 2021-05-24 22:10:45 · 92 阅读 · 0 评论 -
894. 所有可能的满二叉树
文章目录题目描述代码实现参考894. 所有可能的满二叉树题目描述代码实现# Definition for a binary tree node.# class TreeNode:# def __init__(self, val=0, left=None, right=None):# self.val = val# self.left = left# self.right = rightclass Solution: def原创 2021-05-24 21:47:59 · 96 阅读 · 0 评论 -
面试题 04.03. 特定深度节点链表
文章目录题目描述解题思路代码实现面试题 04.03. 特定深度节点链表题目描述解题思路1、层次遍历 + 构造链表代码实现# Definition for a binary tree node.# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.right = None# Definition for singly-li原创 2021-05-19 08:12:39 · 78 阅读 · 0 评论 -
1315. 祖父节点值为偶数的节点和
文章目录题目描述解题思路代码实现参考1315. 祖父节点值为偶数的节点和题目描述解题思路1、层次遍历、深度优先均可,比正常这些方法多一点是需要记录父节点和祖父节点代码实现# Definition for a binary tree node.# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.right = Nonec原创 2021-05-18 08:17:31 · 83 阅读 · 0 评论