LC 137. 只出现一次的数字 II 题目描述这是 LeetCode 上的 137. 只出现一次的数字 II ,难度为 中等。 给你一个整数数组 nums ,除某个元素仅出现 一次 外,其余每个元素都恰出现 三次 。请你找出并返回那个只出现了一次的元素。 示例 1:123输入:nums = [2,2,3,2]输出:3示例 2:123输入:nums = [0,1,0,1,0,1,99]输出:99 提示: 1 <= nums.le 2021-04-30 哈希表 位运算
LC 403. 青蛙过河 题目描述这是 LeetCode 上的 403. 青蛙过河 ,难度为 困难。 一只青蛙想要过河。 假定河流被等分为若干个单元格,并且在每一个单元格内都有可能放有一块石子(也有可能没有)。 青蛙可以跳上石子,但是不可以跳入水中。 给你石子的位置列表 stones(用单元格序号 升序 表示), 请判定青蛙能否成功过河(即能否在最后一步跳至最后一块石子上)。 开始时, 青蛙默认已站在第一块石子上,并可以假 2021-04-29 DFS BFS 线性 DP 记忆化搜索
LC 633. 平方数之和 题目描述这是 LeetCode 上的 633. 平方数之和 ,难度为 中等。 给定一个非负整数 c ,你要判断是否存在两个整数 a 和 b,使得 $a^2$ + $b^2$ = c 。 示例 1:12345输入:c = 5输出:true解释:1 * 1 + 2 * 2 = 5示例 2:123输入:c = 3输出:false示例 3:123输入:c = 4输出:true示例 4:123输入:c = 2021-04-28 双指针 数学
LC 938. 二叉搜索树的范围和 题目描述这是 LeetCode 上的 938. 二叉搜索树的范围和 ,难度为 简单。 给定二叉搜索树的根结点 root,返回值位于范围 [low, high] 之间的所有结点的值的和。 示例 1: 123输入:root = [10,5,15,3,7,null,18], low = 7, high = 15输出:32 示例 2: 123输入:root = [10,5,15,3,7,13,18,1 2021-04-27 DFS BFS 树的搜索
LC 1011. 在 D 天内送达包裹的能力 题目描述这是 LeetCode 上的 1011. 在 D 天内送达包裹的能力 ,难度为 中等。 传送带上的包裹必须在 D 天内从一个港口运送到另一个港口。 传送带上的第 i 个包裹的重量为 $weights[i]$。 每一天,我们都会按给出重量的顺序往传送带上装载包裹。 我们装载的重量不会超过船的最大运载重量。 返回能在 D 天内将传送带上的所有包裹送达的船的最低运载能力。 示例 1:123456 2021-04-26 二分
LC 897. 递增顺序搜索树 题目描述这是 LeetCode 上的 897. 递增顺序搜索树 ,难度为 简单。 给你一棵二叉搜索树,请你按中序遍历将其重新排列为一棵递增顺序搜索树,使树中最左边的节点成为树的根节点,并且每个节点没有左子节点,只有一个右子节点。 示例 1: 123输入:root = [5,3,6,2,4,null,8,1,null,null,null,7,9]输出:[1,null,2,null,3,null,4 2021-04-25 树的遍历 递归 非递归
LC 368. 最大整除子集 题目描述这是 LeetCode 上的 368. 最大整除子集 ,难度为 中等。 给你一个由无重复正整数组成的集合 nums,请你找出并返回其中最大的整除子集 answer,子集中每一元素对 $(answer[i], answer[j])$ 都应当满足:answer[i] % answer[j] = 0 或 answer[j] % answer[i] = 0。 如果存在多个有效解子集,返回其中任何一 2021-04-23 序列 DP
LC 363. 矩形区域不超过 K 的最大数值和 题目描述这是 LeetCode 上的 363. 矩形区域不超过 K 的最大数值和 ,难度为 困难。 给你一个 m x n 的矩阵 matrix 和一个整数 $k$ ,找出并返回矩阵内部矩形区域的不超过 $k$ 的最大数值和。 题目数据保证总会存在一个数值和不超过 $k$ 的矩形区域。 示例 1: 12345输入:matrix = [[1,0,1],[0,-2,3]], k = 2输出:2解释:蓝 2021-04-21 二分 前缀和
LC 91. 解码方法 题目描述这是 LeetCode 上的 91. 解码方法 ,难度为 中等。 一条包含字母 A-Z 的消息通过以下映射进行了 编码 :1234'A' -> 1'B' -> 2...'Z' -> 26要解码已编码的消息,所有数字必须基于上述映射的方法,反向映射回字母(可能有多种方法)。 例如,"11106" 2021-04-19 线性 DP
LC 220. 存在重复元素 III 题目描述这是 LeetCode 上的 220. 存在重复元素 III ,难度为 中等。 给你一个整数数组 nums 和两个整数 k 和 t。 请你判断是否存在两个不同下标 i 和 j,使得 abs(nums[i] - nums[j]) <= t,同时又满足 abs(i - j) <= k 。 如果存在则返回 true,不存在返回 false。 示例 1:123输入:nums = [1, 2021-04-17 滑动窗口 二分 桶排序
LC 279. 完全平方数 题目描述这是 LeetCode 上的 279. 完全平方数 ,难度为 中等。 给定正整数 n,找到若干个完全平方数(比如 1, 4, 9, 16, …)使得它们的和等于 n。你需要让组成和的完全平方数的个数最少。 给你一个整数 n ,返回和为 n 的完全平方数的 最少数量 。 完全平方数 是一个整数,其值等于另一个整数的平方;换句话说,其值等于一个整数自乘的积。例如,1、4、9 和 16 都是完全 2021-04-16 动态规划 背包问题 完全背包
LC 87. 扰乱字符串 题目描述这是 LeetCode 上的 87. 扰乱字符串 ,难度为 困难。 使用下面描述的算法可以扰乱字符串 s 得到字符串 t : 如果字符串的长度为 1 ,算法停止 如果字符串的长度 > 1 ,执行下述步骤: 在一个随机下标处将字符串分割成两个非空的子字符串。即,如果已知字符串 s ,则可以将其分成两个子字符串 x 和 y ,且满足 s = x + y 。 随机 决定是要「交换两个子字 2021-04-16 DFS 记忆化搜索 区间 DP
LC 778. 水位上升的泳池中游泳 题目描述这是 LeetCode 上的 778. 水位上升的泳池中游泳 ,难度为 困难。 在一个 N x N 的坐标方格 grid 中,每一个方格的值 $grid[i][j]$ 表示在位置 $(i,j)$ 的平台高度。 现在开始下雨了,当时间为 $t$ 时,此时雨水导致水池中任意位置的水位为 $t$ 。 你可以从一个平台游向四周相邻的任意一个平台,但是前提是此时水位必须同时淹没这两个平台。 假定你可 2021-04-15 二分 并查集 BFS 最小生成树 Kruskal
LC 213. 打家劫舍 II 题目描述这是 LeetCode 上的 213. 打家劫舍 II ,难度为 中等。 你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金。 这个地方所有的房屋都 围成一圈 ,这意味着第一个房屋和最后一个房屋是紧挨着的。 同时,相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警 。 给定一个代表每个房屋存放金额的非负整数数组,计算你 在不触动警报装置的 2021-04-15 线性 DP
LC 208. 实现 Trie (前缀树) 题目描述这是 LeetCode 上的 208. 实现 Trie (前缀树) ,难度为 中等。 Tag :「字典树」 Trie(发音类似 "try")或者说 前缀树 是一种树形数据结构,用于高效地存储和检索字符串数据集中的键。 这一数据结构有相当多的应用情景,例如自动补完和拼写检查。 请你实现 Trie 类: Trie() 初始化前缀树对象。 void insert(Strin 2021-04-14