摘要: 监控二叉树 (LeetCode 968) 这段代码实现了一个算法,用于在二叉树中放置最少数量的摄像头以监控所有节点。该算法使用了后序遍历(DFS)来确定每个节点的状态,并计算所需的最小摄像头数量。 核心思想: 定义了三种状态值: 0:节点未被覆盖。 1:节点上有摄像头。 2:节点被覆盖(由其他摄像头 阅读全文
posted @ 2025-02-25 23:29 123木头人-10086 阅读(12) 评论(0) 推荐(0)
摘要: 合并区间 问题描述 给定一个区间的集合,合并所有重叠的区间。 代码逻辑 排序:首先按照区间的起始位置对所有区间进行升序排序。 合并: 初始化一个当前区间 cur 为第一个区间。 遍历所有区间,对于每个区间: 如果当前区间的起始位置小于等于 cur 的结束位置,说明它们重叠,更新 cur 的结束位置为 阅读全文
posted @ 2025-02-25 02:44 123木头人-10086 阅读(5) 评论(0) 推荐(0)
摘要: 用最少数量的箭引爆气球 问题描述 给定一系列气球的水平直径(以区间 [start, end] 表示),要求用最少数量的箭引爆所有气球。每个箭可以水平射中一个区间内的所有气球。 代码逻辑 排序:按照气球区间的右端点升序排序。如果右端点相同,则按左端点升序。 贪心算法: 初始化箭的数量为1,当前箭的覆盖 阅读全文
posted @ 2025-02-23 18:38 123木头人-10086 阅读(4) 评论(0) 推荐(0)
摘要: 分发糖果 问题描述 根据孩子们的评分分发糖果,要求: 每个孩子至少得到一颗糖果。 如果一个孩子的评分比相邻孩子高,则他必须比相邻孩子得到更多糖果。 解题思路 两次遍历: 从左到右:如果右边孩子的评分比左边高,则右边孩子至少比左边孩子多一颗糖果。 从右到左:如果左边孩子的评分比右边高,则左边孩子的糖果 阅读全文
posted @ 2025-02-21 18:38 123木头人-10086 阅读(9) 评论(0) 推荐(0)
摘要: 跳跃游戏 II 题目背景 给定一个非负整数数组 nums,你最初位于数组的第一个位置。每个元素代表你在该位置可以跳跃的最大长度。目标是使用最少的跳跃次数到达数组的最后一个位置。 实现思路 预处理:将每个位置的最大可到达位置进行预处理,存储在原数组中。 贪心策略:从当前位置出发,选择下一个能够到达最远 阅读全文
posted @ 2025-02-19 13:21 123木头人-10086 阅读(17) 评论(0) 推荐(0)
摘要: 解数独(37) 问题描述 给定一个9×9的数独棋盘,部分数字已填入,需要填充剩余的空格,使得每行、每列以及每个3×3的子网格内的数字均为1-9且不重复。 代码实现 你的代码使用了回溯法来解决数独问题。核心思路如下: 预处理冲突状态: 使用三个二维布尔数组 ca、cb 和 cc 分别记录行、列和九宫格 阅读全文
posted @ 2025-02-18 21:45 123木头人-10086 阅读(13) 评论(0) 推荐(0)
摘要: 全排列 II 问题描述 给定一个可能包含重复数字的数组 nums,生成所有唯一的排列。 代码逻辑 初始化: 对数组进行排序(Arrays.sort(nums)),以便后续去重。 使用 List<List> res 存储最终结果。 使用 LinkedList path 存储当前路径。 使用布尔数组 u 阅读全文
posted @ 2025-02-17 17:38 123木头人-10086 阅读(17) 评论(0) 推荐(0)
摘要: 子集 II 问题描述:给定一个可能包含重复数字的数组 nums,返回其所有不重复的子集。 代码实现: 排序:首先对数组进行排序,以便后续处理重复元素。 深度优先搜索(DFS): 使用递归的方式生成所有子集。 在递归过程中,通过 path 记录当前路径,start 表示当前搜索的起始位置。 每次递归时 阅读全文
posted @ 2025-02-16 14:49 123木头人-10086 阅读(7) 评论(0) 推荐(0)
摘要: 分割回文串 问题描述 给定一个字符串 s,将字符串分割成若干个子字符串,使得每个子字符串都是回文串。返回所有可能的分割方式。 解题思路 使用深度优先搜索(DFS)和回溯法: 使用递归函数 dfsPartition,从字符串的起始位置开始尝试分割。 对于每个可能的分割点,检查当前子字符串是否为回文。 阅读全文
posted @ 2025-02-15 21:46 123木头人-10086 阅读(11) 评论(0) 推荐(0)
摘要: 电话号码的字母组合(LeetCode 17) 问题描述 给定一个仅包含数字 2-9 的字符串 digits,返回它能表示的所有字母组合。数字到字母的映射与电话按键相同(与字母表顺序不同)。答案可以按任意顺序返回。 代码实现 代码使用了深度优先搜索(DFS)来生成所有可能的字母组合。 映射数组: 使用 阅读全文
posted @ 2025-02-14 11:34 123木头人-10086 阅读(18) 评论(0) 推荐(0)