Files
2026-08-24 04:35:13 +00:00

615 lines
21 KiB
HTML

<!DOCTYPE html>
<html lang="zh-Hans">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>LeetCode Hot 100 图解算法</title>
<link rel="stylesheet" href="shared/style.css">
<style>
.hero { text-align:center; padding:3rem 1rem; }
.hero h1 { font-size:2.5rem; margin-bottom:.5rem; }
.hero p { color:var(--text-secondary); font-size:1.1rem; }
.stats { display:flex; gap:1rem; justify-content:center; margin-top:1.5rem; flex-wrap:wrap; }
.stat-card { background:white; border:1px solid var(--border); border-radius:12px; padding:1rem 1.5rem; text-align:center; box-shadow:var(--shadow); min-width:100px; }
.stat-card .num { font-size:2rem; font-weight:800; }
.stat-card .label { font-size:.85rem; color:var(--text-secondary); }
.category { margin-bottom:2rem; }
.category h2 { font-size:1.3rem; color:var(--text); margin-bottom:.75rem; padding-bottom:.5rem; border-bottom:2px solid var(--border); }
.grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(240px,1fr)); gap:10px; }
.card-link { display:block; background:white; border:1px solid var(--border); border-radius:10px; padding:12px 16px; text-decoration:none; color:var(--text); transition:all .2s; box-shadow:0 1px 2px rgba(0,0,0,.04); }
.card-link:hover { transform:translateY(-2px); box-shadow:var(--shadow-md); border-color:var(--blue); }
.card-link .id { font-size:.8rem; color:var(--text-muted); }
.card-link .title { font-weight:600; font-size:.95rem; margin-top:2px; }
.badge { display:inline-block; padding:1px 8px; border-radius:999px; font-size:11px; font-weight:600; }
.badge.easy { background:#dcfce7; color:#166534; }
.badge.medium { background:#fef3c7; color:#92400e; }
.badge.hard { background:#fee2e2; color:#991b1b; }
@media(max-width:768px) { .grid { grid-template-columns:1fr 1fr; } .hero h1 { font-size:1.8rem; } }
</style>
</head>
<body>
<div class="container">
<div class="hero">
<h1>🧮 LeetCode Hot 100 图解算法</h1>
<p>交互式可视化 · 逐步演示 · 每一步都看得见</p>
<div class="stats">
<div class="stat-card"><div class="num">100</div><div class="label">题目</div></div>
<div class="stat-card"><div class="num" style="color:var(--green)">25</div><div class="label">简单</div></div>
<div class="stat-card"><div class="num" style="color:#f59e0b">60</div><div class="label">中等</div></div>
<div class="stat-card"><div class="num" style="color:var(--red)">15</div><div class="label">困难</div></div>
</div>
</div>
<div class="category">
<h2>哈希(3题)</h2>
<div class="grid">
<a class="card-link" href="two-sum/">
<span class="id">#001</span>
<span class="badge easy">简单</span>
<div class="title">两数之和</div>
</a>
<a class="card-link" href="group-anagrams/">
<span class="id">#002</span>
<span class="badge medium">中等</span>
<div class="title">字母异位词分组</div>
</a>
<a class="card-link" href="longest-consecutive-sequence/">
<span class="id">#003</span>
<span class="badge medium">中等</span>
<div class="title">最长连续序列</div>
</a>
</div></div>
<div class="category">
<h2>双指针(4题)</h2>
<div class="grid">
<a class="card-link" href="move-zeros/">
<span class="id">#004</span>
<span class="badge easy">简单</span>
<div class="title">移动零</div>
</a>
<a class="card-link" href="container-with-most-water/">
<span class="id">#005</span>
<span class="badge medium">中等</span>
<div class="title">盛最多水的容器</div>
</a>
<a class="card-link" href="3sum/">
<span class="id">#006</span>
<span class="badge medium">中等</span>
<div class="title">三数之和</div>
</a>
<a class="card-link" href="trapping-rain-water/">
<span class="id">#007</span>
<span class="badge hard">困难</span>
<div class="title">接雨水</div>
</a>
</div></div>
<div class="category">
<h2>滑动窗口(2题)</h2>
<div class="grid">
<a class="card-link" href="longest-substring-without-repeating-chars/">
<span class="id">#008</span>
<span class="badge medium">中等</span>
<div class="title">无重复字符的最长子串</div>
</a>
<a class="card-link" href="find-all-anagrams-in-a-string/">
<span class="id">#009</span>
<span class="badge medium">中等</span>
<div class="title">找到字符串中所有字母异位词</div>
</a>
</div></div>
<div class="category">
<h2>子串(3题)</h2>
<div class="grid">
<a class="card-link" href="subarray-sum-equals-k/">
<span class="id">#010</span>
<span class="badge medium">中等</span>
<div class="title">和为 K 的子数组</div>
</a>
<a class="card-link" href="sliding-window-maximum/">
<span class="id">#011</span>
<span class="badge hard">困难</span>
<div class="title">滑动窗口最大值</div>
</a>
<a class="card-link" href="minimum-window-substring/">
<span class="id">#012</span>
<span class="badge hard">困难</span>
<div class="title">最小覆盖子串</div>
</a>
</div></div>
<div class="category">
<h2>普通数组(5题)</h2>
<div class="grid">
<a class="card-link" href="maximum-subarray/">
<span class="id">#013</span>
<span class="badge medium">中等</span>
<div class="title">最大子数组和</div>
</a>
<a class="card-link" href="merge-intervals/">
<span class="id">#014</span>
<span class="badge medium">中等</span>
<div class="title">合并区间</div>
</a>
<a class="card-link" href="rotate-array/">
<span class="id">#015</span>
<span class="badge medium">中等</span>
<div class="title">轮转数组</div>
</a>
<a class="card-link" href="product-of-array-except-self/">
<span class="id">#016</span>
<span class="badge medium">中等</span>
<div class="title">除自身以外数组的乘积</div>
</a>
<a class="card-link" href="first-missing-positive/">
<span class="id">#017</span>
<span class="badge hard">困难</span>
<div class="title">缺失的第一个正数</div>
</a>
</div></div>
<div class="category">
<h2>矩阵(4题)</h2>
<div class="grid">
<a class="card-link" href="set-matrix-zeroes/">
<span class="id">#018</span>
<span class="badge medium">中等</span>
<div class="title">矩阵置零</div>
</a>
<a class="card-link" href="spiral-matrix/">
<span class="id">#019</span>
<span class="badge medium">中等</span>
<div class="title">螺旋矩阵</div>
</a>
<a class="card-link" href="rotate-image/">
<span class="id">#020</span>
<span class="badge medium">中等</span>
<div class="title">旋转图像</div>
</a>
<a class="card-link" href="search-a-2d-matrix-ii/">
<span class="id">#021</span>
<span class="badge medium">中等</span>
<div class="title">搜索二维矩阵 II</div>
</a>
</div></div>
<div class="category">
<h2>链表(14题)</h2>
<div class="grid">
<a class="card-link" href="intersection-of-two-linked-lists/">
<span class="id">#022</span>
<span class="badge easy">简单</span>
<div class="title">相交链表</div>
</a>
<a class="card-link" href="reverse-linked-list/">
<span class="id">#023</span>
<span class="badge easy">简单</span>
<div class="title">反转链表</div>
</a>
<a class="card-link" href="palindrome-linked-list/">
<span class="id">#024</span>
<span class="badge easy">简单</span>
<div class="title">回文链表</div>
</a>
<a class="card-link" href="linked-list-cycle/">
<span class="id">#025</span>
<span class="badge easy">简单</span>
<div class="title">环形链表</div>
</a>
<a class="card-link" href="linked-list-cycle-ii/">
<span class="id">#026</span>
<span class="badge medium">中等</span>
<div class="title">环形链表 II</div>
</a>
<a class="card-link" href="merge-two-sorted-lists/">
<span class="id">#027</span>
<span class="badge easy">简单</span>
<div class="title">合并两个有序链表</div>
</a>
<a class="card-link" href="add-two-numbers/">
<span class="id">#028</span>
<span class="badge medium">中等</span>
<div class="title">两数相加</div>
</a>
<a class="card-link" href="remove-nth-node-from-end-of-list/">
<span class="id">#029</span>
<span class="badge medium">中等</span>
<div class="title">删除链表的倒数第 N 个结点</div>
</a>
<a class="card-link" href="swap-nodes-in-pairs/">
<span class="id">#030</span>
<span class="badge medium">中等</span>
<div class="title">两两交换链表中的节点</div>
</a>
<a class="card-link" href="reverse-nodes-in-k-group/">
<span class="id">#031</span>
<span class="badge hard">困难</span>
<div class="title">K 个一组翻转链表</div>
</a>
<a class="card-link" href="copy-list-with-random-pointer/">
<span class="id">#032</span>
<span class="badge medium">中等</span>
<div class="title">随机链表的复制</div>
</a>
<a class="card-link" href="sort-list/">
<span class="id">#033</span>
<span class="badge medium">中等</span>
<div class="title">排序链表</div>
</a>
<a class="card-link" href="merge-k-sorted-lists/">
<span class="id">#034</span>
<span class="badge hard">困难</span>
<div class="title">合并 K 个升序链表</div>
</a>
<a class="card-link" href="lru-cache/">
<span class="id">#035</span>
<span class="badge medium">中等</span>
<div class="title">LRU 缓存</div>
</a>
</div></div>
<div class="category">
<h2>二叉树(15题)</h2>
<div class="grid">
<a class="card-link" href="binary-tree-inorder-traversal/">
<span class="id">#036</span>
<span class="badge easy">简单</span>
<div class="title">二叉树的中序遍历</div>
</a>
<a class="card-link" href="maximum-depth-of-binary-tree/">
<span class="id">#037</span>
<span class="badge easy">简单</span>
<div class="title">二叉树的最大深度</div>
</a>
<a class="card-link" href="invert-binary-tree/">
<span class="id">#038</span>
<span class="badge easy">简单</span>
<div class="title">翻转二叉树</div>
</a>
<a class="card-link" href="symmetric-tree/">
<span class="id">#039</span>
<span class="badge easy">简单</span>
<div class="title">对称二叉树</div>
</a>
<a class="card-link" href="diameter-of-binary-tree/">
<span class="id">#040</span>
<span class="badge easy">简单</span>
<div class="title">二叉树的直径</div>
</a>
<a class="card-link" href="binary-tree-level-order-traversal/">
<span class="id">#041</span>
<span class="badge medium">中等</span>
<div class="title">二叉树的层序遍历</div>
</a>
<a class="card-link" href="convert-sorted-array-to-bst/">
<span class="id">#042</span>
<span class="badge easy">简单</span>
<div class="title">将有序数组转换为二叉搜索树</div>
</a>
<a class="card-link" href="validate-binary-search-tree/">
<span class="id">#043</span>
<span class="badge medium">中等</span>
<div class="title">验证二叉搜索树</div>
</a>
<a class="card-link" href="kth-smallest-element-in-a-bst/">
<span class="id">#044</span>
<span class="badge medium">中等</span>
<div class="title">二叉搜索树中第 K 小的元素</div>
</a>
<a class="card-link" href="binary-tree-right-side-view/">
<span class="id">#045</span>
<span class="badge medium">中等</span>
<div class="title">二叉树的右视图</div>
</a>
<a class="card-link" href="flatten-binary-tree-to-linked-list/">
<span class="id">#046</span>
<span class="badge medium">中等</span>
<div class="title">二叉树展开为链表</div>
</a>
<a class="card-link" href="construct-binary-tree-from-preorder-and-inorder/">
<span class="id">#047</span>
<span class="badge medium">中等</span>
<div class="title">从前序与中序遍历序列构造二叉树</div>
</a>
<a class="card-link" href="path-sum-iii/">
<span class="id">#048</span>
<span class="badge medium">中等</span>
<div class="title">路径总和 III</div>
</a>
<a class="card-link" href="lowest-common-ancestor-of-a-binary-tree/">
<span class="id">#049</span>
<span class="badge medium">中等</span>
<div class="title">二叉树的最近公共祖先</div>
</a>
<a class="card-link" href="binary-tree-maximum-path-sum/">
<span class="id">#050</span>
<span class="badge hard">困难</span>
<div class="title">二叉树中的最大路径和</div>
</a>
</div></div>
<div class="category">
<h2>图论(4题)</h2>
<div class="grid">
<a class="card-link" href="number-of-islands/">
<span class="id">#051</span>
<span class="badge medium">中等</span>
<div class="title">岛屿数量</div>
</a>
<a class="card-link" href="rotting-oranges/">
<span class="id">#052</span>
<span class="badge medium">中等</span>
<div class="title">腐烂的橘子</div>
</a>
<a class="card-link" href="course-schedule/">
<span class="id">#053</span>
<span class="badge medium">中等</span>
<div class="title">课程表</div>
</a>
<a class="card-link" href="implement-trie-prefix-tree/">
<span class="id">#054</span>
<span class="badge medium">中等</span>
<div class="title">实现 Trie (前缀树)</div>
</a>
</div></div>
<div class="category">
<h2>回溯(8题)</h2>
<div class="grid">
<a class="card-link" href="permutations/">
<span class="id">#055</span>
<span class="badge medium">中等</span>
<div class="title">全排列</div>
</a>
<a class="card-link" href="subsets/">
<span class="id">#056</span>
<span class="badge medium">中等</span>
<div class="title">子集</div>
</a>
<a class="card-link" href="letter-combinations-of-a-phone-number/">
<span class="id">#057</span>
<span class="badge medium">中等</span>
<div class="title">电话号码的字母组合</div>
</a>
<a class="card-link" href="combination-sum/">
<span class="id">#058</span>
<span class="badge medium">中等</span>
<div class="title">组合总和</div>
</a>
<a class="card-link" href="generate-parentheses/">
<span class="id">#059</span>
<span class="badge medium">中等</span>
<div class="title">括号生成</div>
</a>
<a class="card-link" href="word-search/">
<span class="id">#060</span>
<span class="badge medium">中等</span>
<div class="title">单词搜索</div>
</a>
<a class="card-link" href="palindrome-partitioning/">
<span class="id">#061</span>
<span class="badge medium">中等</span>
<div class="title">分割回文串</div>
</a>
<a class="card-link" href="n-queens/">
<span class="id">#062</span>
<span class="badge hard">困难</span>
<div class="title">N 皇后</div>
</a>
</div></div>
<div class="category">
<h2>二分查找(6题)</h2>
<div class="grid">
<a class="card-link" href="search-insert-position/">
<span class="id">#063</span>
<span class="badge easy">简单</span>
<div class="title">搜索插入位置</div>
</a>
<a class="card-link" href="search-a-2d-matrix/">
<span class="id">#064</span>
<span class="badge medium">中等</span>
<div class="title">搜索二维矩阵</div>
</a>
<a class="card-link" href="find-first-and-last-position-of-element-in-sorted-array/">
<span class="id">#065</span>
<span class="badge medium">中等</span>
<div class="title">在排序数组中查找元素的第一个和最后一个位置</div>
</a>
<a class="card-link" href="search-in-rotated-sorted-array/">
<span class="id">#066</span>
<span class="badge medium">中等</span>
<div class="title">搜索旋转排序数组</div>
</a>
<a class="card-link" href="find-minimum-in-rotated-sorted-array/">
<span class="id">#067</span>
<span class="badge medium">中等</span>
<div class="title">寻找旋转排序数组中的最小值</div>
</a>
<a class="card-link" href="median-of-two-sorted-arrays/">
<span class="id">#068</span>
<span class="badge hard">困难</span>
<div class="title">寻找两个正序数组的中位数</div>
</a>
</div></div>
<div class="category">
<h2>栈(5题)</h2>
<div class="grid">
<a class="card-link" href="valid-parentheses/">
<span class="id">#069</span>
<span class="badge easy">简单</span>
<div class="title">有效的括号</div>
</a>
<a class="card-link" href="min-stack/">
<span class="id">#070</span>
<span class="badge medium">中等</span>
<div class="title">最小栈</div>
</a>
<a class="card-link" href="decode-string/">
<span class="id">#071</span>
<span class="badge medium">中等</span>
<div class="title">字符串解码</div>
</a>
<a class="card-link" href="daily-temperatures/">
<span class="id">#072</span>
<span class="badge medium">中等</span>
<div class="title">每日温度</div>
</a>
<a class="card-link" href="largest-rectangle-in-histogram/">
<span class="id">#073</span>
<span class="badge hard">困难</span>
<div class="title">柱状图中最大的矩形</div>
</a>
</div></div>
<div class="category">
<h2>堆(3题)</h2>
<div class="grid">
<a class="card-link" href="kth-largest-element-in-an-array/">
<span class="id">#074</span>
<span class="badge medium">中等</span>
<div class="title">数组中的第K个最大元素</div>
</a>
<a class="card-link" href="top-k-frequent-elements/">
<span class="id">#075</span>
<span class="badge medium">中等</span>
<div class="title">前 K 个高频元素</div>
</a>
<a class="card-link" href="find-median-from-data-stream/">
<span class="id">#076</span>
<span class="badge hard">困难</span>
<div class="title">数据流的中位数</div>
</a>
</div></div>
<div class="category">
<h2>贪心(4题)</h2>
<div class="grid">
<a class="card-link" href="best-time-to-buy-and-sell-stock/">
<span class="id">#077</span>
<span class="badge easy">简单</span>
<div class="title">买卖股票的最佳时机</div>
</a>
<a class="card-link" href="jump-game/">
<span class="id">#078</span>
<span class="badge medium">中等</span>
<div class="title">跳跃游戏</div>
</a>
<a class="card-link" href="jump-game-ii/">
<span class="id">#079</span>
<span class="badge medium">中等</span>
<div class="title">跳跃游戏 II</div>
</a>
<a class="card-link" href="partition-labels/">
<span class="id">#080</span>
<span class="badge medium">中等</span>
<div class="title">划分字母区间</div>
</a>
</div></div>
<div class="category">
<h2>动态规划(10题)</h2>
<div class="grid">
<a class="card-link" href="climbing-stairs/">
<span class="id">#081</span>
<span class="badge easy">简单</span>
<div class="title">爬楼梯</div>
</a>
<a class="card-link" href="pascals-triangle/">
<span class="id">#082</span>
<span class="badge easy">简单</span>
<div class="title">杨辉三角</div>
</a>
<a class="card-link" href="house-robber/">
<span class="id">#083</span>
<span class="badge medium">中等</span>
<div class="title">打家劫舍</div>
</a>
<a class="card-link" href="perfect-squares/">
<span class="id">#084</span>
<span class="badge medium">中等</span>
<div class="title">完全平方数</div>
</a>
<a class="card-link" href="coin-change/">
<span class="id">#085</span>
<span class="badge medium">中等</span>
<div class="title">零钱兑换</div>
</a>
<a class="card-link" href="word-break/">
<span class="id">#086</span>
<span class="badge medium">中等</span>
<div class="title">单词拆分</div>
</a>
<a class="card-link" href="longest-increasing-subsequence/">
<span class="id">#087</span>
<span class="badge medium">中等</span>
<div class="title">最长递增子序列</div>
</a>
<a class="card-link" href="maximum-product-subarray/">
<span class="id">#088</span>
<span class="badge medium">中等</span>
<div class="title">乘积最大子数组</div>
</a>
<a class="card-link" href="partition-equal-subset-sum/">
<span class="id">#089</span>
<span class="badge medium">中等</span>
<div class="title">分割等和子集</div>
</a>
<a class="card-link" href="longest-valid-parentheses/">
<span class="id">#090</span>
<span class="badge hard">困难</span>
<div class="title">最长有效括号</div>
</a>
</div></div>
<div class="category">
<h2>多维动态规划(5题)</h2>
<div class="grid">
<a class="card-link" href="unique-paths/">
<span class="id">#091</span>
<span class="badge medium">中等</span>
<div class="title">不同路径</div>
</a>
<a class="card-link" href="minimum-path-sum/">
<span class="id">#092</span>
<span class="badge medium">中等</span>
<div class="title">最小路径和</div>
</a>
<a class="card-link" href="longest-palindromic-substring/">
<span class="id">#093</span>
<span class="badge medium">中等</span>
<div class="title">最长回文子串</div>
</a>
<a class="card-link" href="longest-common-subsequence/">
<span class="id">#094</span>
<span class="badge medium">中等</span>
<div class="title">最长公共子序列</div>
</a>
<a class="card-link" href="edit-distance/">
<span class="id">#095</span>
<span class="badge medium">中等</span>
<div class="title">编辑距离</div>
</a>
</div></div>
<div class="category">
<h2>技巧(5题)</h2>
<div class="grid">
<a class="card-link" href="single-number/">
<span class="id">#096</span>
<span class="badge easy">简单</span>
<div class="title">只出现一次的数字</div>
</a>
<a class="card-link" href="majority-element/">
<span class="id">#097</span>
<span class="badge easy">简单</span>
<div class="title">多数元素</div>
</a>
<a class="card-link" href="sort-colors/">
<span class="id">#098</span>
<span class="badge medium">中等</span>
<div class="title">颜色分类</div>
</a>
<a class="card-link" href="next-permutation/">
<span class="id">#099</span>
<span class="badge medium">中等</span>
<div class="title">下一个排列</div>
</a>
<a class="card-link" href="find-the-duplicate-number/">
<span class="id">#100</span>
<span class="badge medium">中等</span>
<div class="title">寻找重复数</div>
</a>
</div></div>
<footer>Powered by QwenPaw · 图解算法 · LeetCode Hot 100</footer>
</div>
</body>
</html>