09 2024 档案

摘要:形式及推导 形式:前向计算如下所示, TopK(x,k)=σ(x+Δ(x,k))注意Δ()满足限制条件Δ(x,k)=k,并且\(\sigm 阅读全文
posted @ 2024-09-25 17:04 WrRan 阅读(116) 评论(0) 推荐(0) 编辑
摘要:题目链接 662. 二叉树最大宽度 思路 BFS+层次遍历 题解链接 官方题解 关键点 与传统层次遍历的差异点:为节点进行编码,最大宽度为队列中最后节点与最初节点之间的节点数量 时间复杂度 O(n) 空间复杂度 O(n) 代码实现: class Solution: def width 阅读全文
posted @ 2024-09-24 15:16 WrRan 阅读(13) 评论(0) 推荐(0) 编辑
摘要:题目链接 3171. 找到按位或最接近 K 的子数组 思路 双循环+位运算性质剪枝 题解链接 利用 OR 的性质(Python/Java/C++/Go) 关键点 识别到OR运算的性质;从而保证双层循环时复杂度可控 时间复杂度 O(nlogmaxv) 空间复杂度 O(1) 代码实现 阅读全文
posted @ 2024-09-24 14:59 WrRan 阅读(9) 评论(0) 推荐(0) 编辑
摘要:题目链接 3170. 删除星号以后字典序最小的字符串 思路 堆栈 & 位运算 题解链接 三种写法:26 个栈+位运算优化(Python/Java/C++/Go) 关键点 1. 用堆栈跟踪各个字母出现的位置 2. 用位运算跟踪当前最小字母(lowbit技巧) 时间复杂度 朴素做法:\(O(n\vert 阅读全文
posted @ 2024-09-24 14:57 WrRan 阅读(6) 评论(0) 推荐(0) 编辑
摘要:题目链接 3169. 无需开会的工作日 思路 排序 题解链接 Wiki 关键点 无 时间复杂度 O(nlogn) 空间复杂度 O(1) 代码实现: class Solution: def countDays(self, days: int, meetings: List[List 阅读全文
posted @ 2024-09-24 14:51 WrRan 阅读(5) 评论(0) 推荐(0) 编辑
摘要:题目链接 3168. 候诊室中的最少椅子数 思路 简单模拟 题解链接 Wiki 关键点 无 时间复杂度 O(n) 空间复杂度 O(1) 代码实现: class Solution: def minimumChairs(self, s: str) -> int: answer = 0 r 阅读全文
posted @ 2024-09-24 14:49 WrRan 阅读(5) 评论(0) 推荐(0) 编辑
摘要:题目链接 3298. 统计重新排列后包含另一个字符串的子字符串数目 II 思路 滑动窗口 题解链接 O(n) 滑动窗口求个数(Python/Java/C++/Go) 关键点 1. LeetCode-76版本的升级题 2. 内循环中如何统计数量 时间复杂度 O(n+|Σ|) 空间复杂 阅读全文
posted @ 2024-09-24 00:27 WrRan 阅读(11) 评论(0) 推荐(0) 编辑
摘要:题目链接 3297. 统计重新排列后包含另一个字符串的子字符串数目 I 思路 滑动窗口 题解链接 O(n) 滑动窗口求个数(Python/Java/C++/Go) 关键点 1. LeetCode-76版本的升级题 2. 内循环中如何统计数量 时间复杂度 O(n+|Σ|) 空间复杂度 阅读全文
posted @ 2024-09-24 00:26 WrRan 阅读(27) 评论(0) 推荐(0) 编辑
摘要:题目链接 3296. 移山所需的最少秒数 思路 问题求解中的值存在“单调性”,可以二分查找 题解链接 1. 两种方法:最小堆模拟/二分答案(Python/Java/C++/Go) 2. Wiki 关键点 1. 确定可二分 2. 根据时间t,得出下降的高度h 3. 确定二分范围 时间复 阅读全文
posted @ 2024-09-24 00:18 WrRan 阅读(9) 评论(0) 推荐(0) 编辑
摘要:题目链接 3295. 举报垃圾信息 思路 简单模拟即可 题解链接 哈希集合,简洁写法(Python/Java/C++/Go) 关键点 无 时间复杂度 O(n) 空间复杂度 O(n) 代码实现: class Solution: def reportSpam(self, message: 阅读全文
posted @ 2024-09-24 00:00 WrRan 阅读(8) 评论(0) 推荐(0) 编辑
摘要:题目链接 76. 最小覆盖子串 思路 滑动窗口 题解链接 两种方法:从 O(52m+n) 到 O(m+n),附题单(Python/Java/C++/C/Go/JS/Rust) 关键点 如何跟踪子串与目标串的差距量(即less) 时间复杂度 O(n+m) 空间复杂度 \(O(|\Sigma|) 阅读全文
posted @ 2024-09-23 23:56 WrRan 阅读(6) 评论(0) 推荐(0) 编辑
摘要:题目链接 136. 只出现一次的数字 思路 位运算-异或的性质 题解链接 O(n) 一次遍历,附题单!(Python/Java/C++/Go/JS/Rust) 关键点 aa=0 时间复杂度 O(n) 空间复杂度 O(1) 代码实现: class Solut 阅读全文
posted @ 2024-09-19 00:04 WrRan 阅读(3) 评论(0) 推荐(0) 编辑
摘要:题目链接 2321. 拼接数组的最大分数 思路 最大子数组和-变体 题解链接 转换成最大子数组和(Python/Java/C++/Go) 关键点 无 时间复杂度 O(n) 空间复杂度 O(1) 代码实现: class Solution: def maximumsSplicedArra 阅读全文
posted @ 2024-09-18 23:18 WrRan 阅读(5) 评论(0) 推荐(0) 编辑
摘要:题目链接 152. 乘积最大子数组 思路 最大子数组和-简单变体 题解链接 动态规划 关键点 无 时间复杂度 O(n) 空间复杂度 O(1) 代码实现: class Solution: def maxProduct(self, nums: List[int]) -> int: ans 阅读全文
posted @ 2024-09-18 23:15 WrRan 阅读(5) 评论(0) 推荐(0) 编辑
摘要:题目链接 918. 环形子数组的最大和 思路 最大子数组和-简单变体 题解链接 没有思路?一张图秒懂!(Python/Java/C++/Go/JS) 关键点 无 时间复杂度 O(n) 空间复杂度 O(1) 代码实现: class Solution: def maxSubarraySu 阅读全文
posted @ 2024-09-18 23:11 WrRan 阅读(3) 评论(0) 推荐(0) 编辑
摘要:题目链接 1191. K 次串联后最大子数组之和 思路 前缀和/动态规划-最大子数组和-简单变体 题解链接 dp做法正确性的详细证明(图帮助理解) 关键点 分情况讨论(k2):1. 序列和小于0 2. 序列和大于等于0 时间复杂度 O(n) 空间复杂度 O(1) 代码实 阅读全文
posted @ 2024-09-18 23:06 WrRan 阅读(4) 评论(0) 推荐(0) 编辑
摘要:题目链接 1749. 任意子数组和的绝对值的最大值 思路 前缀和/动态规划-最大子数组和-简单变体 题解链接 两种方法:动态规划/前缀和(附题单!Python/Java/C++/Go/JS) 关键点 无 时间复杂度 O(n) 空间复杂度 O(1) 代码实现(动态规划): class 阅读全文
posted @ 2024-09-18 22:14 WrRan 阅读(3) 评论(0) 推荐(0) 编辑
摘要:题目链接 2606. 找到最大开销的子字符串 思路 前缀和/动态规划-最长子数组和-简单变体 题解链接 【转换】最大子数组和(Python/Java/C++/Go) 关键点 无 时间复杂度 O(n) 空间复杂度 O(1) 代码实现(动态规划): class Solution: def 阅读全文
posted @ 2024-09-18 22:09 WrRan 阅读(3) 评论(0) 推荐(0) 编辑
摘要:题目链接 53. 最大子数组和 思路 1. 前缀和 2. 动态规划 题解链接 两种方法:前缀和/动态规划(Python/Java/C++/C/Go/JS/Rust) 关键点 无 时间复杂度 O(n) 空间复杂度 O(1) 代码实现(前缀和): class Solution: def 阅读全文
posted @ 2024-09-18 22:00 WrRan 阅读(6) 评论(0) 推荐(0) 编辑
摘要:题目链接 3186. 施咒的最大总伤害 思路 动态规划-打家劫舍(值域版)-简单变体 题解链接 【套路】值域打家劫舍(Python/Java/C++/Go) 关键点 1. 排序 2. 对可选数字进行“打家劫舍” 时间复杂度 O(nlogn) 空间复杂度 O(n) 代码实现: cl 阅读全文
posted @ 2024-09-18 21:55 WrRan 阅读(9) 评论(0) 推荐(0) 编辑
摘要:题目链接 213. 打家劫舍 II 思路 动态规划-打家劫舍-简单变体 题解链接 简洁写法!直接调用 198 题代码!(Python/Java/C++/Go/JS/Rust) 关键点 可以分为两种情况讨论:1. 选第一个位置 2. 不选第一个位置 时间复杂度 O(n) 空间复杂度 \(O(1 阅读全文
posted @ 2024-09-18 21:50 WrRan 阅读(3) 评论(0) 推荐(0) 编辑
摘要:题目链接 2320. 统计放置房子的方式数 思路 动态规划-斐波拉契数列 题解链接 线性 DP(Python/Java/C++/Go) 关键点 无 时间复杂度 O(n) 空间复杂度 O(n) 代码实现: MOD = 10 ** 9 + 7 f = [1, 2] for _ in ra 阅读全文
posted @ 2024-09-18 14:57 WrRan 阅读(3) 评论(0) 推荐(0) 编辑
摘要:题目链接 740. 删除并获得点数 思路 动态规划-打家劫舍-变体 题解链接 官方题解 关键点 优化版本:排序后,分段获取“连续子序列”的“打家劫舍值”后进行加和 时间复杂度 O(#nums+maxnums)O(n)(优化版本) 空间复杂度 \( 阅读全文
posted @ 2024-09-18 14:39 WrRan 阅读(4) 评论(0) 推荐(0) 编辑
摘要:题目链接 198. 打家劫舍 思路 入门动态规划-“打家劫舍”系列 题解链接 【视频讲解】动态规划入门:从记忆化搜索到递推(Python/Java/C++/Go/JS) 关键点 无 时间复杂度 O(n) 空间复杂度 O(n)或者O(1) 代码实现(DFS): class So 阅读全文
posted @ 2024-09-18 14:27 WrRan 阅读(6) 评论(0) 推荐(0) 编辑
摘要:算法描述 Ridge regression uses the same simple linear regression model but adds an additional penalty on the L2-norm of the coefficients to the loss f 阅读全文
posted @ 2024-09-14 17:08 WrRan 阅读(8) 评论(0) 推荐(0) 编辑
摘要:算法描述 A weighted linear least-squares regression model. Notes In weighted linear least-squares regression, a real-valued target vector, y, 阅读全文
posted @ 2024-09-14 16:39 WrRan 阅读(5) 评论(0) 推荐(0) 编辑
摘要:题目链接 135. 分发糖果 思路 动态规划 题解链接 动态规划,计算最长递减序列 关键点 识别出:发放的糖果的数量实质上需要找到“最长递增子串”的长度 时间复杂度 O(n) 空间复杂度 O(n) 代码实现: class Solution: def candy(self, ratin 阅读全文
posted @ 2024-09-14 00:03 WrRan 阅读(5) 评论(0) 推荐(0) 编辑
摘要:题目链接 300. 最长递增子序列 思路 1. 动态规划 2. 贪心+二分 题解链接 【视频】三种方法:记忆化搜索/递推/二分查找(Python/Java/C++/Go) 关键点 无 时间复杂度 动态规划:O(n2) 贪心+二分:O(nlogn) 空间复杂度 动态规划:\(O( 阅读全文
posted @ 2024-09-13 23:57 WrRan 阅读(4) 评论(0) 推荐(0) 编辑
摘要:题目链接 32. 最长有效括号 思路 动态规划 题解链接 官方题解 关键点 1. 只有si=(时才需要转移 2. 当遇到'...))'格式的情形时,需要考虑前面片段中转移的索引下标 时间复杂度 O(n) 空间复杂度 O(n) 状态转移方程为(只有\(s_{ 阅读全文
posted @ 2024-09-13 23:43 WrRan 阅读(9) 评论(0) 推荐(0) 编辑
摘要:题目链接 66. 加一 思路 简单模拟题 题解链接 官方题解 关键点 无 时间复杂度 O(1) 空间复杂度 O(1) 代码实现: class Solution: def plusOne(self, digits: List[int]) -> List[int]: carry = 1 阅读全文
posted @ 2024-09-13 23:19 WrRan 阅读(4) 评论(0) 推荐(0) 编辑
摘要:题目链接 52. N 皇后 II 思路 经典回溯题 题解链接 【视频】回溯秒杀N皇后!一个视频讲透!(Python/Java/C++/Go/JS) 关键点 无 时间复杂度 O(n!) 空间复杂度 O(n) 代码实现: class Solution: def totalNQueens( 阅读全文
posted @ 2024-09-13 23:15 WrRan 阅读(2) 评论(0) 推荐(0) 编辑
摘要:题目链接 30. 串联所有单词的子串 思路 滑动窗口 题解链接 官方题解 关键点 线性平移的动作;有明确状态量;应当使用滑动窗口 时间复杂度 O(len(words0))×len(s)) 空间复杂度 \(O(\text{len}(\tex 阅读全文
posted @ 2024-09-13 23:10 WrRan 阅读(6) 评论(0) 推荐(0) 编辑
摘要:题目链接 438. 找到字符串中所有字母异位词 思路 滑动窗口 题解链接 官方题解 关键点 顺序比较;判断的状态量可以依此变更时应当使用“滑动窗口”的方式进行更新 时间复杂度 O(m+(nm)×) 空间复杂度 O() 代码实现: class Solut 阅读全文
posted @ 2024-09-13 22:58 WrRan 阅读(3) 评论(0) 推荐(0) 编辑
摘要:题目链接 2266. 统计打字方案数 思路 动态规划-“爬楼梯”变体 题解链接 分组 + 线性 DP + 乘法原理(Python/Go/C++/Java) 关键点 1. 预处理类“斐波拉契数组” 2. 区分“79”及其他数字 时间复杂度 O(n) 空间复杂度 O(1) 代码实现: M 阅读全文
posted @ 2024-09-13 00:46 WrRan 阅读(10) 评论(0) 推荐(0) 编辑
摘要:题目链接 2466. 统计构造好字符串的方案数 思路 动态规划-“爬楼梯”变体 题解链接 爬楼梯换皮(Python/Java/C++/Go/JS/Rust) 关键点 dp(i)=dp(izero)+dp(ione) 时间复杂度 O(high) 空间复杂度 \(O(high 阅读全文
posted @ 2024-09-13 00:38 WrRan 阅读(5) 评论(0) 推荐(0) 编辑
摘要:题目链接 377. 组合总和 Ⅳ 思路 动态规划 题解链接 本质是爬楼梯:从记忆化搜索到递推,附题单(Python/Java/C++/C/Go/JS/Rust) 关键点 1. 时间复杂度 O(targetn) 空间复杂度 O(target) 代码实现: class So 阅读全文
posted @ 2024-09-13 00:35 WrRan 阅读(5) 评论(0) 推荐(0) 编辑
摘要:题目链接 746. 使用最小花费爬楼梯 思路 动态规划 题解链接 教你一步步思考动态规划:从记忆化搜索到递推(附题单)Python/Java/C++/Go/JS/Rust 关键点 1. \(dp(i) = min(dp(i-1) + cost_{i-1}, dp(i-2) + cost_{i-2}) 阅读全文
posted @ 2024-09-13 00:04 WrRan 阅读(5) 评论(0) 推荐(0) 编辑
摘要:题目链接 70. 爬楼梯 思路 动态规划 题解链接 教你一步步思考动态规划:从记忆化搜索到递推(Python/Java/C++/Go/JS/Rust) 关键点 1. dp(i)=dp(i1)+dp(i2) 2. dp(1)=1 时间复杂度 O(n) 空间复杂度 阅读全文
posted @ 2024-09-13 00:01 WrRan 阅读(5) 评论(0) 推荐(0) 编辑
摘要:题目链接 208. 实现 Trie (前缀树) 思路 模板题 - Trie树 题解链接 官方题解 关键点 无 时间复杂度 O(i#wordi) 空间复杂度 O(i#wordi) 代码实现: class Trie: 阅读全文
posted @ 2024-09-12 23:45 WrRan 阅读(4) 评论(0) 推荐(0) 编辑
摘要:题目链接 720. 词典中最长的单词 思路 Trie树的经典应用 题解链接 官方题解 关键点 构建Trie树 时间复杂度 O(i#wordi) 空间复杂度 O(i#wordi) 代码实现: class Trie: 阅读全文
posted @ 2024-09-12 23:41 WrRan 阅读(17) 评论(0) 推荐(0) 编辑
摘要:题目链接 671. 二叉树中第二小的节点 思路 树的遍历(DFS) 题解链接 官方题解 关键点 利用树的性质进行适当剪枝:1. 树的根节点为全局最小点 2. 父节点的值为该子树的最小值 时间复杂度 O(n) 空间复杂度 O(n) 代码实现: class Solution: def f 阅读全文
posted @ 2024-09-12 01:34 WrRan 阅读(5) 评论(0) 推荐(0) 编辑
摘要:题目链接 404. 左叶子之和 思路 树的遍历(DFS) 题解链接 官方题解 关键点 无 时间复杂度 O(n) 空间复杂度 O(n) 代码实现: class Solution: def sumOfLeftLeaves(self, root: Optional[TreeNode]) - 阅读全文
posted @ 2024-09-12 01:22 WrRan 阅读(3) 评论(0) 推荐(0) 编辑
摘要:题目链接 LCP 44. 开幕式焰火 思路 树的遍历 题解链接 Go DFS+哈希表 关键点 无 时间复杂度 O(n) 空间复杂度 O(n) 代码实现: class Solution: def numColor(self, root: TreeNode) -> int: seen = 阅读全文
posted @ 2024-09-12 01:18 WrRan 阅读(3) 评论(0) 推荐(0) 编辑
摘要:题目链接 872. 叶子相似的树 思路 通过DFS的方式得到树的叶子节点序列 题解链接 官方题解 关键点 yeild from dfs(node.left) 时间复杂度 O(n1+n2) 空间复杂度 O(n1+n2) 代码实现: class Solution: def lea 阅读全文
posted @ 2024-09-12 01:16 WrRan 阅读(4) 评论(0) 推荐(0) 编辑
摘要:题目链接 145. 二叉树的后序遍历 思路 二叉树的后序遍历-模板题 题解链接 官方题解 关键点 无 时间复杂度 O(n) 空间复杂度 O(n) 代码实现: class Solution: def postorderTraversal(self, root: Optional[Tre 阅读全文
posted @ 2024-09-12 01:12 WrRan 阅读(3) 评论(0) 推荐(0) 编辑
摘要:题目链接 94. 二叉树的中序遍历 思路 二叉树的中序遍历-经典模板题 题解链接 官方题解 关键点 无 时间复杂度 O(n) 空间复杂度 O(n) 代码实现: class Solution: def inorderTraversal(self, root: Optional[Tree 阅读全文
posted @ 2024-09-12 01:09 WrRan 阅读(9) 评论(0) 推荐(0) 编辑
摘要:题目链接 144. 二叉树的前序遍历 思路 二叉树前序遍历-经典模板题 题解链接 官方题解 关键点 无 时间复杂度 O(n) 空间复杂度 O(n) 代码实现: class Solution: def preorderTraversal(self, root: Optional[Tre 阅读全文
posted @ 2024-09-12 01:04 WrRan 阅读(5) 评论(0) 推荐(0) 编辑
摘要:题目链接 457. 环形数组是否存在循环 思路 思维题-快慢指针 题解链接 【负雪明烛】动画题解:快慢指针 关键点 1. 将题意中移动规则抽象为nextpos 2. 限制条件的检查:同号 且 循环节点数量大于1 3. 鸽巢原理:只需要循环n次 时间复杂度 O(n) 空间复杂度 阅读全文
posted @ 2024-09-12 01:01 WrRan 阅读(4) 评论(0) 推荐(0) 编辑
摘要:题目链接 143. 重排链表 思路 链表综合题:快慢指针(找链表一半位置)+ 链表翻转 题解链接 【视频】没想明白?一个视频讲透!(Python/Java/C++/Go/JS) 关键点 快慢指针:while fast and fast.next: ... && 合并时结束条件:while secon 阅读全文
posted @ 2024-09-12 00:43 WrRan 阅读(6) 评论(0) 推荐(0) 编辑
摘要:题目链接 2130. 链表最大孪生和 思路 链表综合题:快慢指针 + 指针翻转 题解链接 官方题解 关键点 while fast.next and fast.next.next: ... 时间复杂度 O(n) 空间复杂度 O(1) 代码实现: class Solution: def 阅读全文
posted @ 2024-09-12 00:26 WrRan 阅读(2) 评论(0) 推荐(0) 编辑
摘要:题目链接 142. 环形链表 II 思路 快慢指针-经典应用:相遇后,移动head及slow直至相遇 题解链接 没想明白?一个视频讲透!含数学推导(Python/Java/C++/Go/JS) 关键点 while fast and fast.next: ... && while head != sl 阅读全文
posted @ 2024-09-11 22:23 WrRan 阅读(4) 评论(0) 推荐(0) 编辑
摘要:题目链接 141. 环形链表 思路 快慢指针-经典问题 题解链接 没想明白?一个视频讲透快慢指针!(Python/Java/C++/Go/JS) 关键点 while fast and fast.next: ... 时间复杂度 O(n) 空间复杂度 O(1) 代码实现: class S 阅读全文
posted @ 2024-09-11 22:20 WrRan 阅读(5) 评论(0) 推荐(0) 编辑
摘要:题目链接 234. 回文链表 思路 链表综合题:快慢指针 + 指针翻转 题解链接 官方题解 关键点 while fast.next and fast.next.next: ... 时间复杂度 O(n) 空间复杂度 O(1) 代码实现: class Solution: def isPa 阅读全文
posted @ 2024-09-11 22:18 WrRan 阅读(4) 评论(0) 推荐(0) 编辑
摘要:题目链接 2095. 删除链表的中间节点 思路 快慢指针-找到中间节点-简单扩展 题解链接 官方题解 关键点 while fast and fast.next: ... 时间复杂度 O(n) 空间复杂度 O(1) 代码实现: class Solution: def deleteMid 阅读全文
posted @ 2024-09-11 22:09 WrRan 阅读(4) 评论(0) 推荐(0) 编辑
摘要:题目链接 876. 链表的中间结点 思路 快慢指针-经典应用题 题解链接 没想明白?一个视频讲透!(Python/Java/C++/Go/JS/Rust) 关键点 while fast and fast.next: ... 时间复杂度 O(n) 空间复杂度 O(1) 代码实现: cl 阅读全文
posted @ 2024-09-11 22:05 WrRan 阅读(4) 评论(0) 推荐(0) 编辑
摘要:概念 函数W(x)若在区间(a,b)可积,且W(x)0,则可以作为权函数。 对于一个多项式的序列fi和权函数W(x),定义内积:\(\langle f_m, f_n\rangle = \int_{a}^{b} f_m(x) f_n(x) W(x) 阅读全文
posted @ 2024-09-11 16:18 WrRan 阅读(106) 评论(0) 推荐(0) 编辑
摘要:题目链接 2385. 感染二叉树需要的总时间 思路 识别为“树的直径” 题解链接 从两次遍历到一次遍历(Python/Java/C++/Go/JS/Rust) 关键点 1. 返回值为(感染时间, 是否包含感染源) 2. 分为三种情况:本节点为感染源、左儿子(或右儿子)为感染源、该子树无感染源 时间复 阅读全文
posted @ 2024-09-11 00:47 WrRan 阅读(7) 评论(0) 推荐(0) 编辑
摘要:题目链接 124. 二叉树中的最大路径和 思路 “树的直径”&“树形DP” 题解链接 【视频】彻底掌握直径 DP!从二叉树到一般树!(Python/Java/C++/Go) 关键点 经典的树形DP:当前状态为左右儿子与当前节点值之和,返回时注意应当返回 \(\max(0, v + \max(v_{l 阅读全文
posted @ 2024-09-11 00:37 WrRan 阅读(9) 评论(0) 推荐(0) 编辑
摘要:题目链接 687. 最长同值路径 思路 “树的直径”的简单变体 题解链接 【视频】彻底掌握直径 DP!从二叉树到一般树!(Python/Java/C++/Go) 关键点 注意维护当前状态:当左二子的值与本节点值不同时,要更新vl=0 时间复杂度 O(n) 空间复杂度 \(O 阅读全文
posted @ 2024-09-11 00:32 WrRan 阅读(7) 评论(0) 推荐(0) 编辑
摘要:题目链接 543. 二叉树的直径 思路 经典模板题 题解链接 【视频】彻底掌握直径 DP!从二叉树到一般树!(Python/Java/C++/Go) 关键点 1. 空节点返回1 2. 本节点回收子节点结果时需要+1 3. 返回给父节点时是取\(\max(v_{l}, v_{r})\ 阅读全文
posted @ 2024-09-11 00:28 WrRan 阅读(3) 评论(0) 推荐(0) 编辑
摘要:题目链接 817. 链表组件 思路 链表-思维题 题解链接 官方题解 关键点 题意可以转换为:1. 节点的值在nums中且节点位于起始位置 2. 节点的值在nums中且前一个节点不在nums中 时间复杂度 O(n) 空间复杂度 O(m) 代码实现: class Solution: d 阅读全文
posted @ 2024-09-11 00:22 WrRan 阅读(4) 评论(0) 推荐(0) 编辑
摘要:题目链接 725. 分隔链表 思路 链表-模拟 题解链接 Python 模拟 关键点 1. 算链表长度 2. 计算余数 3. 落入余数部分应当多放1一个节点 时间复杂度 O(n) 空间复杂度 O(1) 代码实现: class Solution: def splitListToPart 阅读全文
posted @ 2024-09-11 00:15 WrRan 阅读(7) 评论(0) 推荐(0) 编辑
摘要:题目链接 2181. 合并零之间的节点 思路 链表-删除节点 题解链接 原地做法,O(1) 空间(Python/Java/C++/C/Go/JS) 关键点 无 时间复杂度 O(n) 空间复杂度 O(1) 代码实现: class Solution: def mergeNodes(sel 阅读全文
posted @ 2024-09-11 00:10 WrRan 阅读(4) 评论(0) 推荐(0) 编辑
摘要:题目链接 2058. 找出临界点之间的最小和最大距离 思路 模拟 题解链接 一次遍历 + 常数空间 关键点 无 时间复杂度 O(n) 空间复杂度 O(1) 代码实现: class Solution: def nodesBetweenCriticalPoints(self, head: 阅读全文
posted @ 2024-09-11 00:07 WrRan 阅读(6) 评论(0) 推荐(0) 编辑
摘要:题目链接 1290. 二进制链表转整数 思路 链表遍历 题解链接 官方题解 关键点 无 时间复杂度 O(n) 空间复杂度 O(1) 代码实现: class Solution: def getDecimalValue(self, head: ListNode) -> int: answ 阅读全文
posted @ 2024-09-11 00:02 WrRan 阅读(5) 评论(0) 推荐(0) 编辑
摘要:题目链接 LCP 08. 剧情触发时间 思路 前缀和+二分法 题解链接 python 前缀和+二分法 关键点 预处理:前处理得到各个时刻三种资源的累计值(必为升序数组);查找:二分法查找三种资源需要满足的时刻,取三者最大值即可得到答案 时间复杂度 O(n) 空间复杂度 O(n) 代码 阅读全文
posted @ 2024-09-10 23:56 WrRan 阅读(8) 评论(0) 推荐(0) 编辑
摘要:题目链接 911. 在线选举 思路 二分 题解链接 [Python/Java/JavaScript/Go] 二分查找 关键点 理解题意:预处理 - 按照times得出每个离散时刻下获胜者的person;询问 - 二分查找到>t的前一个时刻获胜者 时间复杂度 O(n) 空间复杂度 \(O(n) 阅读全文
posted @ 2024-09-10 23:44 WrRan 阅读(5) 评论(0) 推荐(0) 编辑
摘要:题目链接 1818. 绝对差值和 思路 排序+二分 题解链接 运用「二分」找最佳替换方案 关键点 转换为查找最小值delta:对nums1进行排序后,从中二分查找nums2[i]的最接近值(考虑到绝对值,需要检查left & right两个位置) 时间复杂度 O(nlogn) 空间复杂度 阅读全文
posted @ 2024-09-10 23:26 WrRan 阅读(8) 评论(0) 推荐(0) 编辑
摘要:题目链接 658. 找到 K 个最接近的元素 思路 二分+双指针 题解链接 官方题解 关键点 二分:查找到第一个>= val的位置;双指针:利用“有序”性质,双指针迭代跟踪left & right的位置 时间复杂度 O(logn+k) 空间复杂度 O(1) 代码实现: cla 阅读全文
posted @ 2024-09-10 23:01 WrRan 阅读(4) 评论(0) 推荐(0) 编辑
摘要:题目链接 1146. 快照数组 思路 哈希+二分法 题解链接 记录修改历史:哈希表+二分查找(Python/Java/C++/Go/JS/Rust) 关键点 理解题意:查询时要找到<=snap_id的最后一次修改记录 时间复杂度 O(logn) 空间复杂度 O(n) 代码实现: 阅读全文
posted @ 2024-09-10 22:51 WrRan 阅读(4) 评论(0) 推荐(0) 编辑
摘要:题目链接 981. 基于时间的键值存储 思路 哈希+二分 题解链接 哈希表+二分 关键点 理解题意 时间复杂度 O(logn) 空间复杂度 O(n) 代码实现: class TimeMap: def __init__(self): self.dct = defaultdict(l 阅读全文
posted @ 2024-09-10 22:35 WrRan 阅读(4) 评论(0) 推荐(0) 编辑
摘要:题目链接 394. 字符串解码 思路 字符串模拟;出现相同子问题,可以使用递归或者栈解决 题解链接 字符串解码(辅助栈法 / 递归法,清晰图解) 关键点 栈:需要存储(重复次数,当前字符串);递归:需要范围 内嵌字符串及结束位置 时间复杂度 O(n) 空间复杂度 O(n) 代码实现( 阅读全文
posted @ 2024-09-10 21:07 WrRan 阅读(8) 评论(0) 推荐(0) 编辑
摘要:题目链接 2563. 统计公平数对的数目 思路 排序+二分(upper_bound - lower_bound) 题解链接 两种方法:二分查找 / 三指针(Python/Java/C++/Go) 关键点 排序并不影响答案(数对数量未变化) 时间复杂度 O(nlogn) 空间复杂度 \(O 阅读全文
posted @ 2024-09-09 23:48 WrRan 阅读(15) 评论(0) 推荐(0) 编辑
摘要:题目链接 2080. 区间内查询数字的频率 思路 二分法(upper_bound - lower_bound) 题解链接 简洁写法:统计位置+二分查找(Python/Java/C++/Go/JS/Rust) 关键点 预先处理得到每个值所处位置的列表 时间复杂度 O(n+mlogn) 阅读全文
posted @ 2024-09-09 23:37 WrRan 阅读(13) 评论(0) 推荐(0) 编辑
摘要:题目链接 1170. 比较字符串最小字母出现频次 思路 题意不易理解;排序+二分(upper_bound) 题解链接 Python简洁解法 关键点 预先处理words 时间复杂度 O((n+m)p) 空间复杂度 O(1) 代码实现: class Solution: def numSm 阅读全文
posted @ 2024-09-09 23:27 WrRan 阅读(8) 评论(0) 推荐(0) 编辑
摘要:题目链接 2389. 和有限的最长子序列 思路 贪心+排序+二分 题解链接 非暴力做法:前缀和 + 二分查找 + 原地 O(1) 空间(Python/Java/C++/Go) 关键点 1. 贪心:由于元素和有上限,为了能让子序列尽量长,子序列中的元素值越小越好。 2. 本题要求计算元素和,因此元素在 阅读全文
posted @ 2024-09-09 23:19 WrRan 阅读(5) 评论(0) 推荐(0) 编辑
摘要:官方文档:bisect 数组二分算法 bisect_left(a, x, lo=0, hi=len(a), *, key=None) 在 a 中找到 x 合适的插入点以维持有序。参数 lo 和 hi 可以被用于确定需要考虑的子集;默认情况下整个列表都会被使用。如果 x 已经在 a 里存在,那么插入点 阅读全文
posted @ 2024-09-09 22:33 WrRan 阅读(11) 评论(0) 推荐(0) 编辑
摘要:题目链接 2300. 咒语和药水的成功对数 思路 排序+二分 题解链接 排序 + 二分(Python/Java/C++/Go/JS/Rust) 关键点 \(xy\ge s \Rightarrow y\ge \lceil \frac{s}{x} \rceil \Rightarrow y > \lflo 阅读全文
posted @ 2024-09-09 22:15 WrRan 阅读(6) 评论(0) 推荐(0) 编辑
摘要:题目链接 1385. 两个数组间的距离值 思路 二分查找 题解链接 官方题解 关键点 标准库的利用;二分循环不变式(开区间):nums[left] < target && nums[right] >= target 时间复杂度 O((n+m)logm) 空间复杂度 O(1) 代码 阅读全文
posted @ 2024-09-09 21:59 WrRan 阅读(8) 评论(0) 推荐(0) 编辑
摘要:题目链接 2529. 正整数和负整数的最大计数 思路 二分法 题解链接 标准库调用 关键点 0的处理 时间复杂度 O(logn) 空间复杂度 O(1) 代码实现: class Solution: def maximumCount(self, nums: List[int]) -> 阅读全文
posted @ 2024-09-09 21:22 WrRan 阅读(6) 评论(0) 推荐(0) 编辑
摘要:题目链接 744. 寻找比目标字母大的最小字母 思路 二分法 题解链接 官方题解 关键点 循环不变量(开区间):letters[left] < target && letters[right] >= target 时间复杂度 O(logn) 空间复杂度 O(1) 代码实现: cl 阅读全文
posted @ 2024-09-09 20:59 WrRan 阅读(7) 评论(0) 推荐(0) 编辑
摘要:题目链接 704. 二分查找 思路 二分法 题解链接 二分查找总是写不对?一个视频讲透!(Python/Java/C++/Go) 关键点 循环不变量(开区间):nums[left] < target && nums[right] >= target 时间复杂度 O(logn) 空间复杂度 阅读全文
posted @ 2024-09-09 19:56 WrRan 阅读(2) 评论(0) 推荐(0) 编辑
摘要:题目链接 35. 搜索插入位置 思路 二分查找 题解链接 二分查找总是写不对?一个视频讲透!(Python/Java/C++/C/Go/JS/Rust) 关键点 排序数组 => 二分查找 时间复杂度 O(logn) 空间复杂度 O(1) 代码实现(开区间写法): class So 阅读全文
posted @ 2024-09-09 19:50 WrRan 阅读(4) 评论(0) 推荐(0) 编辑
摘要:题目链接 34. 在排序数组中查找元素的第一个和最后一个位置 思路 二分法 题解链接 【视频讲解】二分查找总是写不对?三种写法,一个视频讲透!(Python/Java/C++/C/Go/JS) 关键点 模板题;应当熟练掌握 时间复杂度 O(logn) 空间复杂度 O(1) 代码实 阅读全文
posted @ 2024-09-09 19:44 WrRan 阅读(4) 评论(0) 推荐(0) 编辑
摘要:题目链接 3277. 查询子数组最大异或值 思路 区间DP(区间异或值计算)+ 区间DP(区间最大值查询) 题解链接 区间 DP 套区间 DP(Python/Java/C++/Go) 关键点 1.区间异或值计算:\(\text{xor}_{i,j}=\text{xor}_{i,j-1}\oplus\ 阅读全文
posted @ 2024-09-09 02:46 WrRan 阅读(5) 评论(0) 推荐(0) 编辑
摘要:题目链接 3276. 选择矩阵中单元格的最大得分 思路 动态规划 题解链接 枚举值域,状压行号,附费用流做法(Python/Java/C++/Go) 关键点 1. 状态定义 - i为矩阵中的数字,j为使用的行号 2. 状态压缩 - 枚举行号(位运算) 时间复杂度 \(O(mn2^m) 阅读全文
posted @ 2024-09-09 02:33 WrRan 阅读(4) 评论(0) 推荐(0) 编辑
摘要:题目链接 3275. 第 K 近障碍物查询 思路 大根堆 题解链接 最大堆维护前 k 小(Python/Java/C++/Go) 关键点 “第k小元素”应转换为“大根堆” 时间复杂度 O(nlogk) 空间复杂度 O(n) 代码实现: class Solution: def r 阅读全文
posted @ 2024-09-09 02:17 WrRan 阅读(9) 评论(0) 推荐(0) 编辑
摘要:题目链接 3274. 检查棋盘方格颜色是否相同 思路 将颜色检查转换为坐标检查 - 奇偶性 题解链接 简洁写法(Python/Java/C++/Go) 关键点 如果 xy 的 ASCII 值的奇偶性相同,那么格子是黑格,否则是白格 时间复杂度 O(1) 空间复杂度 \( 阅读全文
posted @ 2024-09-09 02:11 WrRan 阅读(7) 评论(0) 推荐(0) 编辑
摘要:题目链接 3283. 吃掉所有兵需要的最多移动次数 思路 动态规划 题解链接 相邻相关排列型状压 DP(Python/Java/C++/Go) 关键点 状态压缩DP 1. 预处理-如何得到“最少移动步数”-BFS & 转换为“位于positions[i]的马到(x,y)的步数” 2 阅读全文
posted @ 2024-09-09 01:49 WrRan 阅读(5) 评论(0) 推荐(0) 编辑
摘要:题目链接 3282. 到达数组末尾的最大得分 思路 转换为“矩阵面积”;贪心解决 题解链接 【一图秒懂】贪心(Python/Java/C++/Go) 关键点 时间复杂度 O(n) 空间复杂度 O(1) 代码实现: class Solution: def findMaximumScor 阅读全文
posted @ 2024-09-09 01:24 WrRan 阅读(3) 评论(0) 推荐(0) 编辑
摘要:题目链接 3281. 范围内整数的最大得分 思路 最大化最小值=>二分法 题解链接 二分答案:最大化最小值(Python/Java/C++/Go) 关键点 二分模板:迭代范围;推荐“开区间” 时间复杂度 \(O(n\log n + n \log \frac{\max(start)+d-\min(st 阅读全文
posted @ 2024-09-09 01:19 WrRan 阅读(5) 评论(0) 推荐(0) 编辑
摘要:题目链接 3280. 将日期转换为二进制表示 思路 简易模拟即可 题解链接 库函数简洁写法(Python/Java/C++/Go) 关键点 python语法+标准库 代码: class Solution: def convertDateToBinary(self, date: str) -> str 阅读全文
posted @ 2024-09-09 01:00 WrRan 阅读(12) 评论(0) 推荐(0) 编辑
摘要:知识结构要求 数学基础知识:数学分析、高等代数、离散数学、概率论与数理统计、最优化方法、数理逻辑等 学科基础知识:人工智能导论、数据结构与算法分析、程序设计基础、人工智能程序设计、机器学习导论、知识表示与处理、模式识别与计算机视觉、自然语言处理、数字系统设计基础、计算机系统基础、操作系统等 专业方向 阅读全文
posted @ 2024-09-08 16:35 WrRan 阅读(23) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示