LC 1582. 二进制矩阵中的特殊位置 题目描述这是 LeetCode 上的 1582. 二进制矩阵中的特殊位置 ,难度为 简单。 给你一个大小为 rows x cols 的矩阵 mat,其中 mat[i][j] 是 0 或 1,请返回 矩阵 mat 中特殊位置的数目 。 特殊位置 定义:如果 mat[i][j] = 1 并且第 i 行和第 j 列中的所有其他元素均为 0(行和列的下标均 从 0 开始 ),则位置 (i, j) 被称为特 2022-09-04 模拟
LC 646. 最长数对链 题目描述这是 LeetCode 上的 646. 最长数对链 ,难度为 中等。 给出 n 个数对。 在每一个数对中,第一个数字总是比第二个数字小。 现在,我们定义一种跟随关系,当且仅当 b < c 时,数对 $(c, d)$ 才可以跟在 $(a, b)$ 后面。我们用这种形式来构造一个数对链。 给定一个数对集合,找出能够形成的最长数对链的长度。你不需要用到所有的数对,你可以以任何顺序选择其中的 2022-09-03 序列 DP 二分 贪心 排序 LIS
LC 687. 最长同值路径 题目描述这是 LeetCode 上的 687. 最长同值路径 ,难度为 中等。 给定一个二叉树的 root,返回 最长的路径的长度 ,这个路径中的 每个节点具有相同值 。 这条路径可以经过也可以不经过根节点。 两个节点之间的路径长度 由它们之间的边数表示。 示例 1:123输入:root = [5,4,5,1,1,5]输出:2示例 2:123输入:root = [1,4,5,4,4,5]输出:2 2022-09-02 DFS 二叉树 递归
LC 1475. 商品折扣后的最终价格 题目描述这是 LeetCode 上的 1475. 商品折扣后的最终价格 ,难度为 简单。 给你一个数组 prices,其中 prices[i] 是商店里第 i 件商品的价格。 商店里正在进行促销活动,如果你要买第 i 件商品,那么你可以得到与 prices[j] 相等的折扣,其中 j 是满足 j > i 且 prices[j] <= prices[i] 的 最小下标 ,如果没有满足条件 2022-09-01 模拟 单调栈
LC 1032. 字符流 题目描述这是 LeetCode 上的 1032. 字符流 ,难度为 困难。 设计一个算法:接收一个字符流,并检查这些字符的后缀是否是字符串数组 words 中的一个字符串。 例如,words = ["abc", "xyz"] 且字符流中逐个依次加入 $4$ 个字符 'a'、'x'、'y' 和 'z 2022-08-31 字典树 枚举 剪枝
LC 946. 验证栈序列 题目描述这是 LeetCode 上的 946. 验证栈序列 ,难度为 中等。 给定 pushed 和 popped 两个序列,每个序列中的值都不重复,只有当它们可能是在最初空栈上进行的推入 push 和弹出 pop 操作序列的结果时,返回 true;否则,返回 false。 示例 1:1234567输入:pushed = [1,2,3,4,5], popped = [4,5,3,2,1]输出:tr 2022-08-31 模拟 双指针 栈
LC 998. 最大二叉树 II 题目描述这是 LeetCode 上的 998. 最大二叉树 II ,难度为 中等。 最大树定义:一棵树,并满足「其中每个节点的值都大于其子树中的任何其他值」。 给你最大树的根节点 root 和一个整数 val 。 给定的树是利用 Construct(a) 例程从列表 a(root = Construct(a))递归地构建的: 如果 a 为空,返回 null 。 否则,令 a[i] 作为 a 的最 2022-08-30 模拟 迭代
LC 1470. 重新排列数组 题目描述这是 LeetCode 上的 1470. 重新排列数组 ,难度为 简单。 给你一个数组 nums,数组中有 2n 个元素,按 $[x_1,x_2,…,x_n,y_1,y_2,…,y_n]$ 的格式排列。 请你将数组按 $[x_1,y_1,x_2,y_2,…,x_n,y_n]$ 格式重新排列,返回重排后的数组。 示例 1:12345输入:nums = [2,5,1,3,4,7], n = 3 2022-08-29 模拟
LC 剑指 Offer 59 - I. 滑动窗口的最大值 题目描述这是 LeetCode 上的 剑指 Offer 59 - I. 滑动窗口的最大值 ,难度为 困难。 给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。 返回滑动窗口中的最大值 。 示例 1:12345678910111213输入:nums = [1,3,-1,-3,5,3,6,7], 2022-08-28 优先队列(堆) 线段树 单调队列 分块 RMQ
LC 239. 滑动窗口最大值 题目描述这是 LeetCode 上的 239. 滑动窗口最大值 ,难度为 困难。 给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。 返回滑动窗口中的最大值 。 示例 1:12345678910111213输入:nums = [1,3,-1,-3,5,3,6,7], k = 3输出:[3,3 2022-08-28 优先队列(堆) 线段树 单调队列 分块 RMQ
LC 793. 阶乘函数后 K 个零 题目描述这是 LeetCode 上的 793. 阶乘函数后 K 个零 ,难度为 困难。 f(x) 是 x! 末尾是 0 的数量。 回想一下 x! = 1 * 2 * 3 * ... * x,且 0! = 1。 例如, f(3) = 0,因为 3! = 6 的末尾没有 0 ;而 f(11) = 2,因为 11!= 39916800 末端有 2 个 0 。 给定 k,找出返回能满足 f(x) = k 2022-08-28 二分 容斥原理 数学
LC 662. 二叉树最大宽度 题目描述这是 LeetCode 上的 662. 二叉树最大宽度 ,难度为 中等。 给你一棵二叉树的根节点 root,返回树的最大宽度。 树的「最大宽度」是所有层中最大的宽度 。 每一层的宽度被定义为该层最左和最右的非空节点(即两个端点)之间的长度。 将这个二叉树视作与满二叉树结构相同,两端点间会出现一些延伸到这一层的 null 节点,这些 null 节点也计入长度。 题目数据保证答案将会在 32 2022-08-27 哈希表 DFS 二叉树
LC 1464. 数组中两元素的最大乘积 题目描述这是 LeetCode 上的 1464. 数组中两元素的最大乘积 ,难度为 简单。 给你一个整数数组 nums,请你选择数组的两个不同下标 i 和 j,使 (nums[i]-1)*(nums[j]-1) 取得最大值。 请你计算并返回该式的最大值。 示例 1:12345输入:nums = [3,4,5,2]输出:12 解释:如果选择下标 i=1 和 j=2(下标从 0 开始),则可以获得最大 2022-08-26 模拟
LC 658. 找到 K 个最接近的元素 题目描述这是 LeetCode 上的 658. 找到 K 个最接近的元素 ,难度为 中等。 给定一个排序好的数组 arr,两个整数 k 和 x ,从数组中找到最靠近 x(两数之差最小)的 k 个数。 返回的结果必须要是按升序排好的。 整数 a 比整数 b 更接近 x 需要满足: |a - x| < |b - x| 或者 |a - x| == |b - x| 且 a < b 示例 1 2022-08-25 双指针 二分
LC 剑指 Offer 41. 数据流中的中位数 题目描述这是 LeetCode 上的 剑指 Offer 41. 数据流中的中位数 ,难度为 困难。 中位数是有序列表中间的数。如果列表长度是偶数,中位数则是中间两个数的平均值。 例如, [2,3,4] 的中位数是 $3$ [2,3] 的中位数是 $(2 + 3) / 2 = 2.5$ 设计一个支持以下两种操作的数据结构: void addNum(int num) - 从数据流中添加一个整数到 2022-08-24 优先队列(堆)