LC 45. 跳跃游戏 II 题目描述这是 LeetCode 上的 45. 跳跃游戏 II ,难度为 中等。 给定一个非负整数数组,你最初位于数组的第一个位置。 数组中的每个元素代表你在该位置可以跳跃的最大长度。 你的目标是使用最少的跳跃次数到达数组的最后一个位置。 假设你总是可以到达数组的最后一个位置。 示例 1:123456输入: [2,3,1,1,4]输出: 2解释: 跳到最后一个位置的最小跳跃数是 2。 从下标 2021-05-13 双指针 贪心 线性 DP
LC 1269. 停在原地的方案数 题目描述这是 LeetCode 上的 1269. 停在原地的方案数 ,难度为 困难。 有一个长度为 arrLen 的数组,开始有一个指针在索引 0 处。 每一步操作中,你可以将指针向左或向右移动 1 步,或者停在原地(指针不能被移动到数组范围外)。 给你两个整数 steps 和 arrLen ,请你计算并返回:在恰好执行 steps 次操作以后,指针仍然指向索引 0 处的方案数。 由于答案可能会很 2021-05-13 线性 DP
LC 1310. 子数组异或查询 题目描述这是 LeetCode 上的 1310. 子数组异或查询 ,难度为 中等。 有一个正整数数组 arr,现给你一个对应的查询数组 queries,其中 queries[i] = [Li, Ri]。 对于每个查询 i,请你计算从 Li 到 Ri 的 XOR 值(即 arr[Li] xor arr[Li+1] xor … xor arr[Ri])作为本次查询的结果。 并返回一个包含给定查询 qu 2021-05-12 前缀和 数学 树状数组
LC 1734. 解码异或后的排列 题目描述这是 LeetCode 上的 1734. 解码异或后的排列 ,难度为 中等。 给你一个整数数组 perm ,它是前 n 个正整数的排列,且 n 是个 奇数 。 它被加密成另一个长度为 n - 1 的整数数组 encoded ,满足 encoded[i] = perm[i] XOR perm[i + 1] 。比方说,如果 perm = [1,3,2] ,那么 encoded = [2,1] 2021-05-11 数学 异或
LC 872. 叶子相似的树 题目描述这是 LeetCode 上的 872. 叶子相似的树 ,难度为 简单。 请考虑一棵二叉树上所有的叶子,这些叶子的值按从左到右的顺序排列形成一个 叶值序列 。 举个例子,如上图所示,给定一棵叶值序列为 (6, 7, 4, 9, 8) 的树。 如果有两棵二叉树的叶值序列是相同,那么我们就认为它们是叶相似的。 如果给定的两个根结点分别为 root1 和 root2 的树是叶相似的,则返回 tr 2021-05-10 DFS 树的搜索 递归 非递归
LC 1482. 制作 m 束花所需的最少天数 题目描述这是 LeetCode 上的 1482. 制作 m 束花所需的最少天数 ,难度为 中等。 给你一个整数数组 bloomDay,以及两个整数 m 和 k。 现需要制作 m 束花。制作花束时,需要使用花园中相邻的 k 朵花 。 花园中有 n 朵花,第 i 朵花会在 bloomDay[i] 时盛开,恰好可以用于一束花中。 请你返回从花园中摘 m 束花需要等待的最少的天数。如果不能摘到 m 束花则 2021-05-09 二分
LC 1723. 完成所有工作的最短时间 题目描述这是 LeetCode 上的 1723. 完成所有工作的最短时间 ,难度为 困难。 给你一个整数数组 jobs ,其中 $jobs[i]$ 是完成第 $i$ 项工作要花费的时间。 请你将这些工作分配给 $k$ 位工人。所有工作都应该分配给工人,且每项工作只能分配给一位工人。 工人的 工作时间 是完成分配给他们的所有工作花费时间的总和。 请你设计一套最佳的工作分配方案,使工人的 最大工作时间 2021-05-08 DFS 模拟退火 随机化 启发式搜索
LC 1486. 数组异或操作 题目描述这是 LeetCode 上的 1486. 数组异或操作 ,难度为 简单。 给你两个整数,n 和 start。 数组 nums 定义为:nums[i] = start + 2 * i(下标从 0 开始)且 n = nums.length。 请返回 nums 中所有元素按位异或(XOR)后得到的结果。 示例 1:123456输入:n = 5, start = 0输出:8解释:数组 nums 为 2021-05-07 模拟 数学
LC 1720. 解码异或后的数组 题目描述这是 LeetCode 上的 1720. 解码异或后的数组 ,难度为 简单。 未知 整数数组 arr 由 n 个非负整数组成。 经编码后变为长度为 n - 1 的另一个整数数组 encoded ,其中 encoded[i] = arr[i] XOR arr[i + 1] 。 例如,arr = [1,0,2,1] 经编码后得到 encoded = [1,2,3] 。 给你编码后的数组 enc 2021-05-06 模拟 数学 位运算
LC 740. 删除并获得点数 题目描述这是 LeetCode 上的 740. 删除并获得点数 ,难度为 中等。 给你一个整数数组 nums ,你可以对它进行一些操作。 每次操作中,选择任意一个 nums[i] ,删除它并获得 nums[i] 的点数。之后,你必须删除 所有 等于 nums[i] - 1 和 nums[i] + 1 的元素。 开始你拥有 0 个点数。返回你能通过这些操作获得的最大点数。 示例 1:1234567输 2021-05-05 序列 DP
LC 1473. 粉刷房子 III 题目描述这是 LeetCode 上的 1473. 粉刷房子 III ,难度为 困难。 在一个小城市里,有 m 个房子排成一排,你需要给每个房子涂上 n 种颜色之一(颜色编号为 1 到 n )。 有的房子去年夏天已经涂过颜色了,所以这些房子不可以被重新涂色。 我们将连续相同颜色尽可能多的房子称为一个街区。 (比方说 houses = [1,2,2,3,3,2,1,1],它包含 5 个街区 [ 2021-05-04 动态规划 序列 DP
LC 554. 砖墙 题目描述这是 LeetCode 上的 554. 砖墙 ,难度为 中等。 你的面前有一堵矩形的、由 n 行砖块组成的砖墙。 这些砖块高度相同(也就是一个单位高)但是宽度不同,每一行砖块的宽度之和相等。 你现在要画一条自顶向下的、穿过最少砖块的垂线。 如果你画的线只是从砖块的边缘经过,就不算穿过这块砖。 你不能沿着墙的两个垂直边缘之一画线,这样显然是没有穿过一块砖的。 给你一个二维数组 wall,该数 2021-05-02 哈希表
LC 888. 公平的糖果棒交换 题目描述这是 LeetCode 上的 888. 公平的糖果棒交换 ,难度为 简单。 爱丽丝和鲍勃有不同大小的糖果棒:A[i] 是爱丽丝拥有的第 i 根糖果棒的大小,B[j] 是鲍勃拥有的第 j 根糖果棒的大小。 因为他们是朋友,所以他们想交换一根糖果棒,这样交换后,他们都有相同的糖果总量(一个人拥有的糖果总量是他们拥有的糖果棒大小的总和)。 返回一个整数数组 ans,其中 ans[0] 是爱丽丝必 2021-05-01 哈希表
LC 690. 员工的重要性 题目描述这是 LeetCode 上的 690. 员工的重要性 ,难度为 简单。 给定一个保存员工信息的数据结构,它包含了员工唯一的 id ,重要度和直系下属的 id 。 比如,员工 1 是员工 2 的领导,员工 2 是员工 3 的领导。他们相应的重要度为 15 , 10 , 5 。 那么员工 1 的数据结构是 [1, 15, [2]],员工 2的 数据结构是 [2, 10, [3]],员工 3 的 2021-05-01 DFS BFS 队列
LC 322. 零钱兑换 题目描述这是 LeetCode 上的 322. 零钱兑换 ,难度为 中等。 给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1。 你可以认为每种硬币的数量是无限的。 示例 1:123输入:coins = [1, 2, 5], amount = 11输出:3 解释:11 = 5 + 5 + 2021-04-30 动态规划 背包问题 完全背包