LC 1802. 有界数组中指定下标处的最大值 题目描述这是 LeetCode 上的 1802. 有界数组中指定下标处的最大值 ,难度为 中等。 给你三个正整数 n、index 和 maxSum。你需要构造一个同时满足下述所有条件的数组 nums(下标 从 0 开始 计数): nums.length == n nums[i] 是 正整数 ,其中 0 <= i < n abs(nums[i] - nums[i+1]) <= 1 2023-01-06 模拟 二分 贪心 数学 构造
LC 1759. 统计同构子字符串的数目 题目描述这是 LeetCode 上的 1759. 统计同构子字符串的数目 ,难度为 中等。 给你一个字符串 s,返回 s 中 同构子字符串 的数目。由于答案可能很大,只需返回对 $10^9 + 7$ 取余 后的结果。 同构字符串 的定义为:如果一个字符串中的所有字符都相同,那么该字符串就是同构字符串。 子字符串 是字符串中的一个连续字符序列。 示例 1:12345678910111213输入:s 2022-12-26 双指针 数学
LC 1785. 构成特定和需要添加的最少元素 题目描述这是 LeetCode 上的 1785. 构成特定和需要添加的最少元素 ,难度为 中等。 给你一个整数数组 nums,和两个整数 limit 与 goal。 数组 nums 有一条重要属性:abs(nums[i]) <= limit。 返回使数组元素总和等于 goal 所需要向数组中添加的 最少元素数量 ,添加元素 不应改变 数组中 abs(nums[i]) <= limit 2022-12-16 模拟 贪心
LC 1781. 所有子字符串美丽值之和 题目描述这是 LeetCode 上的 1781. 所有子字符串美丽值之和 ,难度为 中等。 一个字符串的 美丽值 定义为:出现频率最高字符与出现频率最低字符的出现次数之差。 比方说,"abaacc" 的美丽值为 3 - 1 = 2。 给你一个字符串 s ,请你返回它所有子字符串的 美丽值 之和。 示例 1:12345输入:s = "aabcb"输出:5解释: 2022-12-14 哈希表 模拟
LC 1697. 检查边长度限制的路径是否存在 题目描述这是 LeetCode 上的 1697. 检查边长度限制的路径是否存在 ,难度为 困难。 给你一个 n 个点组成的无向图边集 edgeList,其中 $edgeList[i] = [u_i, v_i, dis_i]$ 表示点 $u_i$ 和点 $v_i$ 之间有一条长度为 $dis_i$ 的边。请注意,两个点之间可能有 超过一条边 。 给你一个查询数组 queries,其中 $querie 2022-12-14 双指针 并查集 排序
LC 1780. 判断一个数字是否可以表示成三的幂的和 题目描述这是 LeetCode 上的 1780. 判断一个数字是否可以表示成三的幂的和 ,难度为 中等。 给你一个整数 n,如果你可以将 n 表示成若干个不同的三的幂之和,请你返回 true,否则请返回 false。 对于一个整数 y,如果存在整数 x 满足 y == 3x,我们称这个整数 y 是三的幂。 示例 1:12345输入:n = 12输出:true解释:12 = 31 + 32示例 2: 2022-12-12 数学
LC 1691. 堆叠长方体的最大高度 题目描述这是 LeetCode 上的 1691. 堆叠长方体的最大高度 ,难度为 困难。 给你 n 个长方体 cuboids,其中第 i 个长方体的长宽高表示为 $cuboids[i] = [width_i, length_i, height_i]$(下标从 0 开始)。请你从 cuboids 选出一个 子集 ,并将它们堆叠起来。 如果 $width{i} <= width{j}$ 且 $l 2022-12-10 动态规划 序列 DP 排序
LC 113. 路径总和 II 题目描述这是 LeetCode 上的 113. 路径总和 II ,难度为 中等。 给你二叉树的根节点 root 和一个整数目标和 targetSum,找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径。 叶子节点 是指没有子节点的节点。 示例 1: 123输入:root = [5,4,8,11,null,13,4,7,2,null,null,5,1], targetSum = 22输出:[ 2022-12-10 DFS 二叉树
LC 93. 复原 IP 地址 题目描述这是 LeetCode 上的 93. 复原 IP 地址 ,难度为 中等。 有效 IP 地址 正好由四个整数(每个整数位于 0 到 255 之间组成,且不能含有前导 0),整数之间用 '.' 分隔。 例如:"0.1.2.201" 和 "192.168.1.1" 是 有效 IP 地址,但是 "0.011.255.245" 2022-12-09 DFS 回溯算法
LC 1775. 通过最少操作次数使数组的和相等 题目描述这是 LeetCode 上的 1775. 通过最少操作次数使数组的和相等量 ,难度为 中等。 给你两个长度可能不等的整数数组 nums1 和 nums2 。两个数组中的所有值都在 1 到 6 之间(包含 1 和 6)。 每次操作中,你可以选择 任意 数组中的任意一个整数,将它变成 1 到 6 之间 任意 的值(包含 1 和 6)。 请你返回使 nums1 中所有数的和与 nums2 中所有 2022-12-09 贪心 数学 枚举
LC 95. 不同的二叉搜索树 II 题目描述这是 LeetCode 上的 95. 不同的二叉搜索树 II ,难度为 中等。 给你一个整数 n,请你生成并返回所有由 n 个节点组成且节点值从 1 到 n 互不相同的不同 二叉搜索树 。可以按 任意顺序 返回答案。 示例 1:123输入:n = 3输出:[[1,null,2,null,3],[1,null,3,2],[2,1,3],[3,1,null,null,2],[3,2,null, 2022-12-09 DFS 递归 树 二叉搜索树 爆搜 BST
LC 895. 最大频率栈 题目描述这是 LeetCode 上的 895. 最大频率栈 ,难度为 困难。 设计一个类似堆栈的数据结构,将元素推入堆栈,并从堆栈中弹出出现频率最高的元素。 实现 FreqStack 类: FreqStack() 构造一个空的堆栈。 void push(int val) 将一个整数 val 压入栈顶。 int pop() 删除并返回堆栈中出现频率最高的元素。 如果出现频率最高的元素不只一个,则 2022-11-30 哈希表 模拟
LC 1758. 生成交替二进制字符串的最少操作数 题目描述这是 LeetCode 上的 1758. 生成交替二进制字符串的最少操作数 ,难度为 简单。 给你一个仅由字符 '0' 和 '1' 组成的字符串 s 。一步操作中,你可以将任一 '0' 变成 '1' ,或者将 '1' 变成 '0' 。 交替字符串 定义为:如果字符串中不存在相邻两个字符相等的情况 2022-11-29 模拟
LC 813. 最大平均值和的分组 题目描述这是 LeetCode 上的 813. 最大平均值和的分组 ,难度为 中等。 给定数组 nums 和一个整数 k 。我们将给定的数组 nums 分成 最多 k 个相邻的非空子数组 。 分数 由每个子数组内的平均值的总和构成。 注意我们必须使用 nums 数组中的每一个数进行分组,并且分数不一定需要是整数。 返回我们所能得到的最大 分数 是多少。答案误差在 $10^{-6}$ 内被视为是正确 2022-11-28 动态规划 前缀和 数学 序列 DP
LC 882. 细分图中的可到达节点 题目描述这是 LeetCode 上的 882. 细分图中的可到达节点 ,难度为 困难。 给你一个无向图(原始图),图中有 n 个节点,编号从 0 到 n - 1 。你决定将图中的每条边 细分 为一条节点链,每条边之间的新节点数各不相同。 图用由边组成的二维数组 edges 表示,其中 $edges[i] = [u{i}, v{i}, cnt{i}]$ 表示原始图中节点 $u{i}$ 和 $v{i} 2022-11-26 最短路 单源最短路 Dijkstra SPFA