Ming's Blog
  • 首页
  • 归档
  • 分类
  • 标签
  • 关于

07_图论

图论邻接表建图# 邻接表 adj = [[] for _ in range(n)] # 无向图 adj[u].append(v) adj[v].append(u) adj[u].append((v, w)) # 带权重 图论基础:BFS 适合求最短路,DFS 适合遍历/搜索 DFS(深度优先搜索)核心思想“一条路走到黑,走不通就回头。” DFS 沿着一个方向一直往深处走,直到无路可走,再回
2026-09-19
算法学习 > 06_Graphs

04_队列与栈

队列from collections import deque dq = deque() dq.append(x) dq.appendleft(x) dq.pop() dq.popleft() 单调队列from collections import deque # 求窗口最小值(递增队列) q = deque() for i in range(n): while q and q[0][
2026-09-19
算法学习 > 01_数据结构

207. 课程表

207. 课程表题目链接(中等) 题目描述你这个学期必须选修 numCourses 门课程,记为 0 到 numCourses - 1。 在选修某些课程之前需要一些先修课程。先修课程按数组 prerequisites 给出,其中 prerequisites[i] = [a_i, b_i],表示如果要学习课程 a_i 则 必须 先学习课程 b_i。 例如,先修课程对 [0, 1] 表示:想要学习课
2026-10-08
刷题笔记 > Hot100 > 图论
#图 #拓扑排序 #深度优先搜索 #广度优先搜索

动态规划

动态规划解题五步法 定义状态:dp[i] 表示什么? 写出状态转移方程:dp[i] 和 dp[i-1] 等之间的关系。 初始化:最小的子问题(边界条件)的值。 确定遍历顺序:一般从小到大,背包问题需注意方向。 确定返回值:dp[n]?dp[n-1]?还是 max(dp)? 一、线性 DP状态沿着一个维度(通常是数组下标)递推。 LC 70. 爬楼梯70. 爬楼梯(简单) 需要 n 阶到达楼顶
2026-10-06
刷题笔记 > Hot100 > 动态规划
#DP #动态规划

155. 最小栈

155. 最小栈题目链接(中等) 题目描述设计一个支持 push、pop、top 操作,并能在常数时间内检索到最小元素的栈。 实现 MinStack 类: MinStack():初始化堆栈对象; void push(int value):将元素 value 推入堆栈; void pop():删除堆栈顶部的元素; int top():获取堆栈顶部的元素; int getMin():获取堆栈中的最小
2026-10-08
刷题笔记 > Hot100 > 栈
#栈 #设计

152. 乘积最大子数组

152. 乘积最大子数组题目链接(中等) 题目描述给你一个整数数组 nums,请你找出数组中乘积最大的非空连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。 测试用例的答案是一个 32 位 整数。 请注意,一个只包含一个元素的数组的乘积是这个元素的值。 数据范围: 1 <= nums.length <= 2 * 10^4 -10 <= nums[i] <
2026-10-08
刷题笔记 > Hot100 > 动态规划
#动态规划 #数组

146. LRU 缓存

146. LRU 缓存题目链接(中等) 题目描述请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。 实现 LRUCache 类: LRUCache(int capacity):以 正整数 作为容量 capacity 初始化 LRU 缓存; int get(int key):如果关键字 key 存在于缓存中,则返回关键字的值,否则返回 -1; void put(int key
2026-10-07
刷题笔记 > Hot100 > 链表
#哈希表 #设计 #双向链表

114. 二叉树展开为链表

114. 二叉树展开为链表题目链接(中等) 题目描述给你二叉树的根结点 root,请你将它展开为一个单链表: 展开后的单链表应该同样使用 TreeNode,其中 right 子指针指向链表中下一个结点,而左子指针始终为 null。 展开后的单链表应该与二叉树的 先序遍历 顺序相同。 数据范围:树中节点数在范围 [0, 2000] 内,-100 <= Node.val <= 100。
2026-10-08
刷题笔记 > Hot100 > 二叉树
#二叉树 #栈 #原地算法 #前序遍历

141 & 142. 环形链表

141. 环形链表题目链接(简单) 题目描述给你一个链表的头节点 head,判断链表中是否有环。 如果链表中存在环,则返回 true;否则,返回 false。 数据范围: 链表中节点的数目范围是 [0, 10^4] -10^5 <= Node.val <= 10^5 方法一:哈希集合思路及解法遍历链表,用哈希集合记录访问过的节点。遍历过程中: 若当前节点已在集合中,说明绕回了,
2026-10-08
刷题笔记 > Hot100 > 链表
#双指针 #哈希表 #链表 #快慢指针

148. 排序链表

148. 排序链表题目链接(中等) 题目描述给你链表的头结点 head,请将其按 升序 排列并返回 排序后的链表。 数据范围: 链表中节点的数目在范围 [0, 5 * 10^4] 内 -10^5 <= Node.val <= 10^5 进阶:你可以在 $O(n \log n)$ 时间复杂度和常数级空间复杂度下,对链表进行排序吗? 示例示例 1: 输入: head = [4,2,1,
2026-10-07
刷题笔记 > Hot100 > 链表
#双指针 #归并排序 #链表
123…14

搜索

Hexo Fluid