摘要: 题目链接 解题思路:通常想法是,把哪些'O'变成'X',这种想法很难做。一个比较简单点是,「哪些'O'不能变成'X'」。其实就是与第一行,最后一行,第一列,最后一列,「相邻的这些」'O',不能变成'X',其他的都能变成' X'. 具体来说,把第一行、最后一行、第一列、最后一列的'O',通过「感染」函 阅读全文
posted @ 2024-12-26 18:29 ouyangxx 阅读(9) 评论(0) 推荐(0)
摘要: 题目链接 解题思路:难点在于时间复杂度O(n),如果直接排序,题目就简单了。但是不需要全部有序,只需要每次从其中拿出一个数,是递增的即可,也就是说,使用优先级队列,堆头是最小值。注:该方法仍然是O(n*logn) 代码 class Solution: def longestConsecutive(s 阅读全文
posted @ 2024-12-26 16:54 ouyangxx 阅读(19) 评论(0) 推荐(0)
摘要: 题目链接 解题思路:双指针,一个一个对比,跳过非数字字母,对比时,忽略大小写 代码 class Solution: def isPalindrome(self, s: str) -> bool: # 双指针 i, j = 0, len(s) - 1 while i < j: # 跳过非字母和数字字符 阅读全文
posted @ 2024-12-26 16:19 ouyangxx 阅读(15) 评论(0) 推荐(0)
摘要: 题目链接 解题思路:二叉树递归套路,以某个节点node为根,最大路径是什么? 1️⃣与node无关,也就是说,不经过node 左子树的最大值,与右子树的最大值,较大的那个,就是结果 2️⃣与node有关 单独node一个节点 经过左子树 经过右子树 左右子树都经过 所以我们需要的信息就两个:tota 阅读全文
posted @ 2024-12-26 16:00 ouyangxx 阅读(38) 评论(0) 推荐(0)
摘要: 题目链接 解题思路:来到i天,如果i的价格大于i-1的价格,那么就可以赚到差价。所以,遍历的过程中,只要prices[i] > prices[i - 1],那么就可以获利了 代码 class Solution: def maxProfit(self, prices: List[int]) -> in 阅读全文
posted @ 2024-12-26 15:12 ouyangxx 阅读(12) 评论(0) 推荐(0)
摘要: 题目链接 解题思路:计算所有,在i卖出,利润最大为多少,求出的所有结果中,最大的那个,就是最终的结果。那么在i卖出,利润最大为多少?就是[0, i - 1]价格最低的时候。 代码 class Solution: def maxProfit(self, prices: List[int]) -> in 阅读全文
posted @ 2024-12-26 15:03 ouyangxx 阅读(16) 评论(0) 推荐(0)
摘要: 题目链接 解题思路:不要被「形状」所迷惑,其实就是,第i行(从0开始),一共有i + 1个数,第一个数和最后一个数是1,其余的数是上一行,「相同位置」+「左边一个位置」。 代码 class Solution: def generate(self, numRows: int) -> List[List 阅读全文
posted @ 2024-12-26 14:45 ouyangxx 阅读(11) 评论(0) 推荐(0)
摘要: 题目链接 解题思路:其实就是在层序遍历的过程中,把next指针填上 代码 class Solution: def connect(self, root: 'Optional[Node]') -> 'Optional[Node]': if root == None: return None # 层序遍 阅读全文
posted @ 2024-12-26 14:39 ouyangxx 阅读(11) 评论(0) 推荐(0)