摘要: 题目链接 解题思路:二叉树递归套路。从左儿子收集信息,从右儿子收集信息,然后得到本节点的信息,再返回给自己的父亲节点。 从儿子收集什么信息? 左儿子是否包含p?左儿子是否包含q?右儿子是否包含p?右儿子是否包含q 任意一个儿子包含p,那么本节点就包含p,任意一个儿子包含q,那么本节点就包含q 如果该 阅读全文
posted @ 2025-02-13 16:12 ouyangxx 阅读(2) 评论(0) 推荐(0) 编辑
摘要: 题目链接 解题思路:二叉搜索树,中序遍历,就是有序的,就可以依次得到第K小的数了 代码 class Solution: # 中序遍历 就是从小到大遍历 def kthSmallest(self, root: Optional[TreeNode], k: int) -> int: stack = [] 阅读全文
posted @ 2025-02-13 15:20 ouyangxx 阅读(1) 评论(0) 推荐(0) 编辑
摘要: 题目链接 解题思路:使用set,遍历数组,如果数组中存在该数,则直接返回True,否则加入set 代码 class Solution: def containsDuplicate(self, nums: List[int]) -> bool: has = set() for num in nums: 阅读全文
posted @ 2025-02-13 14:26 ouyangxx 阅读(0) 评论(0) 推荐(0) 编辑
摘要: 题目链接 解题思路:使用优先级队列,大小是K,小根堆。遍历数组,当前数为num,如果num小于堆顶,那么num不可能是结果,如果num大于堆顶,那么就把堆顶元素弹出去,同时把num放入优先级队列,依次遍历完数组,堆顶元素就是答案。 为什么正确? 因为优先级队列保持着【当前最大的k个元素】,而堆顶则是 阅读全文
posted @ 2025-02-13 11:29 ouyangxx 阅读(2) 评论(0) 推荐(0) 编辑
摘要: 题目链接 解题思路:来到index位置,决定偷,或者不偷。但是有一个问题,来到最后一个位置的时候,可以偷吗?因为房屋是一个圆圈,如果第一个位置偷了,那么最后一个位置就不能偷,那么暴力递归时,怎么知道呢? 将问题解耦成两个问题,第一个房间偷+第一个房间不偷。第一个房间偷,那么最后一个房间必不能偷;第一 阅读全文
posted @ 2025-02-13 10:39 ouyangxx 阅读(3) 评论(0) 推荐(0) 编辑
点击右上角即可分享
微信分享提示