LC 735. 行星碰撞 题目描述这是 LeetCode 上的 735. 行星碰撞 ,难度为 中等。 给定一个整数数组 asteroids,表示在同一行的行星。 对于数组中的每一个元素,其绝对值表示行星的大小,正负表示行星的移动方向(正表示向右移动,负表示向左移动)。 每一颗行星以相同的速度移动,找出碰撞后剩下的所有行星。 碰撞规则: 两个行星相互碰撞,较小的行星会爆炸。 如果两颗行星大小相同,则两颗行星都会爆炸。 两颗 2022-07-13 模拟 栈
LC 1252. 奇数值单元格的数目 题目描述这是 LeetCode 上的 1252. 奇数值单元格的数目 ,难度为 简单。 给你一个 $m \times n$ 的矩阵,最开始的时候,每个单元格中的值都是 $0$。 另有一个二维索引数组 indices,$indices[i] = [r_i, c_i]$ 指向矩阵中的某个位置,其中 $r_i$ 和 $c_i$ 分别表示指定的行和列(从 $0$ 开始编号)。 对 $indices[i]$ 2022-07-12 模拟 位运算 计数
LC 676. 实现一个魔法字典 题目描述这是 LeetCode 上的 676. 实现一个魔法字典 ,难度为 中等。 设计一个使用单词列表进行初始化的数据结构,单词列表中的单词 互不相同 。 如果给出一个单词,请判定能否只将这个单词中一个字母换成另一个字母,使得所形成的新单词存在于你构建的字典中。 实现 MagicDictionary 类: MagicDictionary() 初始化对象 void buildDict(Strin 2022-07-11 DFS 字典树
LC 741. 摘樱桃 题目描述这是 LeetCode 上的 741. 摘樱桃 ,难度为 困难。 一个$N \times N$ 的网格( grid) 代表了一块樱桃地,每个格子由以下三种数字的一种来表示: $0$ 表示这个格子是空的,所以你可以穿过它。 $1$ 表示这个格子里装着一个樱桃,你可以摘到樱桃然后穿过它。 $-1$ 表示这个格子里有荆棘,挡着你的路。 你的任务是在遵守下列规则的情况下,尽可能的摘到最多樱桃: 2022-07-10 线性 DP
LC 873. 最长的斐波那契子序列的长度 题目描述这是 LeetCode 上的 873. 最长的斐波那契子序列的长度 ,难度为 中等。 如果序列 $X_1, X_2, …, X_n$ 满足下列条件,就说它是 斐波那契式 的: n >= 3 对于所有 i + 2 <= n,都有 $Xi + X{i+1} = X_{i+2}$ 给定一个严格递增的正整数数组形成序列 arr,找到 arr 中最长的斐波那契式的子序列的长度。如果一 2022-07-09 动态规划 序列 DP 哈希表
LC 1217. 玩筹码 题目描述这是 LeetCode 上的 1217. 玩筹码 ,难度为 简单。 有 n 个筹码,第 $i$ 个筹码的位置是 position[i]。 我们需要把所有筹码移到同一个位置。 在一步中,我们可以将第 $i$ 个筹码的位置从 $position[i]$ 改变为: position[i] + 2 或 position[i] - 2,此时 cost = 0 position[i] + 1 或 p 2022-07-08 贪心 枚举
LC 648. 单词替换 题目描述这是 LeetCode 上的 648. 单词替换 ,难度为 中等。 在英语中,我们有一个叫做 词根(root) 的概念,可以词根后面添加其他一些词组成另一个较长的单词——我们称这个词为 继承词(successor)。例如,词根an,跟随着单词 other(其他),可以形成新的单词 another(另一个)。 现在,给定一个由许多词根组成的词典 dictionary 和一个用空格分隔单词形成 2022-07-07 字典树
LC 736. Lisp 语法解析 题目描述这是 LeetCode 上的 736. Lisp 语法解析 ,难度为 困难。 给你一个类似 Lisp 语句的字符串表达式 expression,求出其计算结果。 表达式语法如下所示: 表达式可以为整数,let 表达式,add 表达式,mult 表达式,或赋值的变量。表达式的结果总是一个整数。 整数可以是正整数、负整数、$0$ let 表达式采用 "(let v1 e1 v2 e 2022-07-06 哈希表 模拟 DFS
LC 729. 我的日程安排表 I 题目描述这是 LeetCode 上的 729. 我的日程安排表 I ,难度为 中等。 实现一个 MyCalendar 类来存放你的日程安排。如果要添加的日程安排不会造成 重复预订 ,则可以存储这个新的日程安排。 当两个日程安排有一些时间上的交叉时(例如两个日程安排都在同一时间内),就会产生 重复预订 。 日程可以用一对整数 start 和 end 表示,这里的时间是半开区间,即 $[start, 2022-07-05 哈希表 模拟 线段树 位运算 红黑树 分块 线段树(动态开点)
LC 556. 下一个更大元素 III 题目描述这是 LeetCode 上的 556. 下一个更大元素 III ,难度为 中等。 给你一个正整数 $n$,请你找出符合条件的最小整数,其由重新排列 $n$ 中存在的每位数字组成,并且其值大于 $n$。 如果不存在这样的正整数,则返回 $-1$ 。 注意 ,返回的整数应当是一个 $32$ 位整数 ,如果存在满足题意的答案,但不是 $32$ 位整数 ,同样返回 $-1$。 示例 1:123输入 2022-07-03 模拟 双指针
LC 1976. 到达目的地的方案数 题目描述这是 LeetCode 上的 1976. 到达目的地的方案数 ,难度为 中等。 你在一个城市里,城市由 $n$ 个路口组成,路口编号为 $0$ 到 $n - 1$ ,某些路口之间有 双向 道路。输入保证你可以从任意路口出发到达其他任意路口,且任意两个路口之间最多有一条路。 给你一个整数 n 和二维整数数组 roads,其中 $roads[i] = [u_i, v_i, time_i]$ 表 2022-07-02 动态规划 最短路 拓扑排序
LC 871. 最低加油次数 题目描述这是 LeetCode 上的 871. 最低加油次数 ,难度为 困难。 汽车从起点出发驶向目的地,该目的地位于出发位置东面 target 英里处。 沿途有加油站,每个 station[i] 代表一个加油站,它位于出发位置东面 station[i][0] 英里处,并且有 station[i][1] 升汽油。 假设汽车油箱的容量是无限的,其中最初有 startFuel 升燃料。它每行驶 $1$ 2022-07-02 模拟 优先队列(堆) 贪心
LC 241. 为运算表达式设计优先级 题目描述这是 LeetCode 上的 241. 为运算表达式设计优先级 ,难度为 中等。 给你一个由数字和运算符组成的字符串 expression,按不同优先级组合数字和运算符,计算并返回所有可能组合的结果。你可以按任意顺序返回答案。 生成的测试用例满足其对应输出值符合 $32$ 位整数范围,不同结果的数量不超过 $10^4$ 。 示例 1:1234567输入:expression = " 2022-07-01 DFS 爆搜
LC 1175. 质数排列 题目描述这是 LeetCode 上的 1175. 质数排列 ,难度为 简单。 请你帮忙给从 $1$ 到 $n$ 的数设计排列方案,使得所有的「质数」都应该被放在「质数索引」(索引从 $1$ 开始)上;你需要返回可能的方案总数。 让我们一起来回顾一下「质数」:质数一定是大于 $1$ 的,并且不能用两个小于它的正整数的乘积来表示。 由于答案可能会很大,所以请你返回答案 模 mod $10^9 + 7$ 2022-06-30 二分 数学 打表 组合数
LC 535. TinyURL 的加密与解密 题目描述这是 LeetCode 上的 535. TinyURL 的加密与解密 ,难度为 中等。 TinyURL 是一种 URL 简化服务, 比如:当你输入一个 URL https://leetcode.com/problems/design-tinyurl 时,它将返回一个简化的URL http://tinyurl.com/4e9iAk 。 请你设计一个类来加密与解密 TinyURL 。 加密和解 2022-06-29 哈希表 模拟