LC 433. 最小基因变化 题目描述这是 LeetCode 上的 433. 最小基因变化 ,难度为 中等。 基因序列可以表示为一条由 $8$ 个字符组成的字符串,其中每个字符都是 'A'、'C'、'G' 和 'T' 之一。 假设我们需要调查从基因序列 start 变为 end 所发生的基因变化。一次基因变化就意味着这个基因序列中的一个字符发生了变化。 例如,& 2022-05-07 图论 DFS BFS 启发式搜索 双向 BFS AStar 算法
LC 933. 最近的请求次数 题目描述这是 LeetCode 上的 933. 最近的请求次数 ,难度为 简单。 写一个 RecentCounter 类来计算特定时间范围内最近的请求。 请你实现 RecentCounter 类: RecentCounter() 初始化计数器,请求数为 $0$ 。 int ping(int t) 在时间 $t$ 添加一个新请求,其中 $t$ 表示以毫秒为单位的某个时间,并返回过去 $3000$ 2022-05-06 分块 线段树(动态开点)
LC 713. 乘积小于 K 的子数组 题目描述这是 LeetCode 上的 713. 乘积小于 K 的子数组 ,难度为 中等。 给你一个整数数组 nums 和一个整数 $k$ ,请你返回子数组内所有元素的乘积严格小于 $k$ 的连续子数组的数目。 示例 1:123456输入:nums = [10,5,2,6], k = 100输出:8解释:8 个乘积小于 100 的子数组分别为:[10]、[5]、[2],、[6]、[10,5]、[5, 2022-05-05 双指针 滑动窗口
LC 1823. 找出游戏的获胜者 题目描述这是 LeetCode 上的 1823. 找出游戏的获胜者 ,难度为 中等。 共有 $n$ 名小伙伴一起做游戏。 小伙伴们围成一圈,按顺时针顺序从 $1$ 到 $n$ 编号。 确切地说,从第 i 名小伙伴顺时针移动一位会到达第 i + 1 名小伙伴的位置,其中 $1 <= i < n$ ,从第 n 名小伙伴顺时针移动一位会回到第 1 名小伙伴的位置。 游戏遵循如下规则: 从第 2022-05-04 模拟 约瑟夫环
LC 937. 重新排列日志文件 题目描述这是 LeetCode 上的 937. 重新排列日志文件 ,难度为 简单。 给你一个日志数组 logs。每条日志都是以空格分隔的字串,其第一个字为字母与数字混合的 标识符 。 有两种不同类型的日志: 字母日志:除标识符之外,所有字均由小写字母组成 数字日志:除标识符之外,所有字均由数字组成 请按下述规则将日志重新排序: 所有 字母日志 都排在 数字日志 之前。 字母日志 在内容不同时 2022-05-03 排序
LC 591. 标签验证器 题目描述这是 LeetCode 上的 591. 标签验证器 ,难度为 困难。 给定一个表示代码片段的字符串,你需要实现一个验证器来解析这段代码,并返回它是否合法。合法的代码片段需要遵守以下的所有规则: 代码必须被合法的闭合标签包围。否则,代码是无效的。 闭合标签(不一定合法)要严格符合格式:<TAG_NAME>TAG_CONTENT</TAG_NAME>。其中,<T 2022-05-02 模拟 栈
LC 1305. 两棵二叉搜索树中的所有元素 题目描述这是 LeetCode 上的 1305. 两棵二叉搜索树中的所有元素 ,难度为 中等。 给你 root1 和root2 这两棵二叉搜索树。请你返回一个列表,其中包含 两棵树 中的所有整数并按 升序 排序。. 示例 1:123输入:root1 = [2,1,4], root2 = [1,0,3]输出:[0,1,1,2,3,4]示例 2:123输入:root1 = [1,null,8], ro 2022-05-01 中序遍历 归并排序
LC 908. 最小差值 I 题目描述这是 LeetCode 上的 908. 最小差值 I ,难度为 简单。 给你一个整数数组 nums,和一个整数 k 。 在一个操作中,您可以选择 $0 <= i < nums.length$ 的任何索引 i 。将 $nums[i]$ 改为 $nums[i] + x$ ,其中 $x$ 是一个范围为 $[-k, k]$ 的整数。 对于每个索引 i ,最多只能应用一次此操作。 num 2022-04-30 模拟 脑筋急转弯
LC 427. 建立四叉树 题目描述这是 LeetCode 上的 427. 建立四叉树 ,难度为 中等。 给你一个 $n \times n$ 矩阵 grid ,矩阵由若干 $0$ 和 $1$ 组成。 请你用四叉树表示该矩阵 grid 。 你需要返回能表示矩阵的四叉树的根结点。 注意,当 isLeaf 为 False 时,你可以把 True 或者 False 赋值给节点,两种值都会被判题机制接受。 四叉树数据结构中,每个内部节 2022-04-29 前缀和 递归
LC 905. 按奇偶排序数组 题目描述这是 LeetCode 上的 905. 按奇偶排序数组 ,难度为 简单。 给你一个整数数组 nums,将 nums 中的的所有偶数元素移动到数组的前面,后跟所有奇数元素。 返回满足此条件的 任一数组 作为答案。 示例 1:12345输入:nums = [3,1,2,4]输出:[2,4,3,1]解释:[4,2,3,1]、[2,4,1,3] 和 [4,2,1,3] 也会被视作正确答案。示例 2 2022-04-28 模拟 双指针
LC 417. 太平洋大西洋水流问题 题目描述这是 LeetCode 上的 417. 太平洋大西洋水流问题 ,难度为 中等。 有一个 m × n 的矩形岛屿,与 太平洋 和 大西洋 相邻。 “太平洋” 处于大陆的左边界和上边界,而 “大西洋” 处于大陆的右边界和下边界。 这个岛被分割成一个由若干方形单元格组成的网格。给定一个 m x n 的整数矩阵 heights , $heights[r][c]$ 表示坐标 $(r, c)$ 上单元 2022-04-27 DFS 并查集 BFS 多源 BFS
LC 883. 三维形体投影面积 题目描述这是 LeetCode 上的 883. 三维形体投影面积 ,难度为 简单。 在 $n n$ 的网格 grid 中,我们放置了一些与 x,y,z 三轴对齐的 $1 1 * 1$ 立方体。 每个值 $v = grid[i][j]$ 表示 $v$ 个正方体叠放在单元格 $(i, j)$ 上。 现在,我们查看这些立方体在 xy、yz 和 zx 平面上的投影。 投影 就像影子,将 三维 形体映射 2022-04-26 模拟
LC 398. 随机数索引 题目描述这是 LeetCode 上的 398. 随机数索引 ,难度为 中等。 给定一个可能含有重复元素的整数数组,要求随机输出给定的数字的索引。 您可以假设给定的数字一定存在于数组中。 注意:数组大小可能非常大,使用太多额外空间的解决方案将不会通过测试。 示例:12345678int[] nums = new int[] {1,2,3,3,3};Solution soluti 2022-04-25 哈希表 模拟 随机化 蓄水池抽样
LC 868. 二进制间距 题目描述这是 LeetCode 上的 868. 二进制间距 ,难度为 简单。 给定一个正整数 $n$,找到并返回 $n$ 的二进制表示中两个 相邻 $1$ 之间的 最长距离 。如果不存在两个相邻的 $1$,返回 $0$ 。 如果只有 $0$ 将两个 $1$ 分隔开(可能不存在 $0$ ),则认为这两个 $1$ 彼此 相邻 。两个 $1$ 之间的距离是它们的二进制表示中位置的绝对差。例如," 2022-04-24 模拟
LC 587. 安装栅栏 题目描述这是 LeetCode 上的 587. 安装栅栏 ,难度为 困难。 在一个二维的花园中,有一些用 $(x, y)$ 坐标表示的树。由于安装费用十分昂贵,你的任务是先用最短的绳子围起所有的树。只有当所有的树都被绳子包围时,花园才能围好栅栏。 你需要找到正好位于栅栏边界上的树的坐标。 示例 1:1234输入: [[1,1],[2,2],[2,0],[2,4],[3,3],[4,2]]输出: [ 2022-04-23 计算几何 凸包