1. 前言
  2. 第一部分 博客
  3. 2024
    1. 播客:AI 时代的频率跃迁背景下个人的选择:高频的卷或低频的定
    2. 播客:张云帆的芒格之道
    3. 播客:人生危机不是崩溃而是瓦解
    4. 个人常用工具及技巧分享
    5. 播客:rrweb 作者的某期播客节目纪要
  4. 第二部分 AGI
  5. 前言
  6. 入门篇
    1. chatGPT 是什么
    2. chatGPT 的原理
    3. DeepSeek LLM v3 和 DeepSeek R1 对比
    4. 大模型是如何训练的?
    5. LangChain(篇一:基础入门篇)
    6. LangChain 概述
    7. Dify notes
  7. Agent
    1. Agent 是什么
    2. Agent 工程架构图
    3. Agent 的进化之路
  8. 第三部分 前端
  9. 前言
  10. 前端基础
    1. Web 技术概述
      1. 名词解释
      2. Web 技术概述
      3. 前端技术
      4. 现代 Web 技术现状
      5. Web 新兴技术
    2. HTML
      1. HTML 概述
      2. HTML 标签与 HTML 属性
      3. HTML 技术关键词
      4. HTML 技术清单
      5. HTML 标签
      6. Web Components
      7. HTML 标准规范
      8. 响应式图片
      9. HTML 模板语言
    3. CSS
      1. CSS 简介
      2. 媒体查询
      3. CSS 兼容性相关
      4. 回流和重绘
      5. 开启 GPU 硬件加速的原理
      6. 盒模型
      7. BFC 与外边距重叠
      8. CSS 布局都有哪些
      9. CSS 定位或布局相关的参考坐标系
      10. CSS 定位
      11. 滚动自动吸附效果与吸顶效果
      12. CSS 变量
      13. CSS 的计算属性
      14. CSS 处理器
      15. CSS 选择器的优先级
      16. CSS Houdini API
      17. Tailland CSS
      18. CSS 性能优化思路
      19. rem 和 vw、vh
    4. JavaScript
      1. JavaScript 简介
      2. JavaScript 的组成
      3. JavaScript 的核心语法
      4. JavaScript 异步编程简介
      5. JavaScript 异步编程:Promise 专题篇一
      6. JavaScript 异步编程:Promise 专题篇二
      7. JavaScript 异步编程:async、await 的实现原理
      8. JavaScript 异步编程:Thunk 函数
      9. 实现批量请求并支持控制最大并发数
      10. JavaScript 的垃圾回收机制
      11. JavaScript 引擎
      12. JavaScript 对象
      13. JavaScript 的单线程
      14. JavaScript 内存泄漏场景及其解决方案
      15. 深拷贝与浅拷贝
      16. apply、call、bind 的区别及简易实现
      17. 遍历对象的方式
      18. javascript 中实现继承的方式
      19. ES6(ES2015) 到 ES2024 的主要特性
      20. class 中各种方法定义的区别
      21. WeakRef 与 FinalizationRegistry
      22. Array.reduce
      23. this 指向问题汇总
      24. BigInt 类型
      25. 原型链
    5. TypeScript
      1. Typescript 基础篇
      2. type 和 interface 的区别
      3. TS 常见问题
      4. interface
      5. Interface 中的运算符操作
      6. TypeScript 中与类型相关的运算符
      7. TypeScript 的泛型(Generics)
      8. TypeScript 项目中使用 node_modules 中定义的全局类型
  11. 浏览器
    1. 哪些事件不会冒泡的事件,以及为什么不支持冒泡?
    2. 使用 requestAnimationFrame 批量处理操作的原理
    3. MessageChannel
    4. 如何检测页面是否在前台运行
    5. 为什么要用 setTimeout 模拟 setInterval ?
    6. 浏览器本地如何读取并处理本地大文件
    7. WebAssembly (Wasm)
    8. Shadow DOM 中的 closed mode 和 open mode
    9. 堆叠上下文 与 z-index 的关系
    10. 浏览器的渲染原理
    11. 渲染层、复合层、层叠上下文对比
    12. 渲染层(Paint Layer)和合成层(Composite Layer)
    13. 渲染层(Paint Layer)和层叠上下文(Stacking Context)
    14. 浏览器中如何查找内存泄漏
    15. 现代 Chrome 浏览器架构设计
    16. requestIdleCallback
    17. Shadow dom 与 Web Component
    18. BroadcastChannel 和 MessageChannel 对比
    19. 跨域与跨页面通讯
    20. 跨域时请求的实际发送情况分析
    21. 浏览器实现截图
    22. AbortController
    23. queueMicrotask
    24. BroadcastChannel
    25. 浏览器的宏任务(MacroTask)的优先级
    26. IndexedDB
    27. cookie 的有效期设置为 0 会怎么样?
  12. Node.js
    1. cjs 与 esm
    2. Nodejs 加载 JSON 文件
    3. commonjs 的 require 机制
    4. 常用的 package.json 字段说明
    5. Nodejs 的单线程与多核
    6. 流与pipe
    7. Node.js 中的通信方式都有哪些
    8. nodejs server 端如何清除 cookie
    9. Node.js 中提高网络传输速度的主要方法
    10. RESTful 接口规范
    11. TCP 粘包
    12. TIME_WAIT 过多的原因以及解决方案
    13. socket hang up
    14. ECONNRESET
    15. Koa 的核心原理
    16. Koa 与 express 对比
    17. 实现一个简易版的 Koa
    18. Nginx 介绍
    19. pnpm(performant npm)
    20. koa 的中间件机制
  13. 前端框架
    1. Vue
      1. Vue3 基础:篇一
      2. Vue3 基础:篇二
      3. Vue3 基础:篇三
      4. Vue3 中 is 属性的使用方法和应用场景
      5. Vue3 组件
      6. Vue 的整体设计思路
      7. Vue3 的响应式原理:effect、computed、watch 的实现原理
      8. Vue3 中 effect 的调度选项(scheduler)使用示例
      9. Vue3 的非原始值响应式方案(Map、WeakMap 、Set 、WeakSet )
      10. vue3 watch 的详细用法(取消监听、恢复监听及清理副作用等)
      11. Vue3 中原始值的响应方案
      12. Vue3 渲染器的原理和实现
      13. Vue3 的 diff 算法
      14. Vue3 的 Diff 算法复杂的分析
      15. Vue3 事件与原生事件的关系和冒泡机制差异分析
      16. Vue3 组件的实现原理
      17. 异步组件和函数式组件的实现原理
      18. Vue3 异步组件的使用
      19. Vue3 中 Transition 组件的实现原理
      20. Vue3 中 keepAlive组件的实现原理
      21. Vue3中 Teleport 组件的实现原理
      22. Vue3 的编译器原理(篇一:基本实现)
      23. Vue3 的编译器原理(篇二:完善的 HTML 解析器)
      24. Vue3 的编译器原理(篇三:编译优化)
      25. Vue3 的服务端渲染(SSR)原理(同构原理)
      26. Vue3 中可使用 JSX 原理
      27. Vue3 中不常用的 API
      28. Vue3 源码主要包功能介绍分析
      29. vue3 中实现类似于 React 高阶组件的功能?
      30. Pinia 状态管理库文档笔记
      31. Vue3 的页面渲染流程
      32. created 和 mounted 这两个生命周期钩子的区别
      33. v-memo 介绍
      34. Vue3 的模板编译也可以发生在运行时
      35. Vue3 生态最新动态
    2. React
      1. useEffect
      2. useLayoutEffect 和 useEffect
      3. 为什么 React 要引入 Hooks
      4. 为什么不应该在循环、条件或嵌套函数中使用 Hooks
      5. React 的 Render Props
      6. React 的架构设计演变
      7. useMemo 、 useCallback、Vue 的 computed
      8. useRef、forwardRef 的用法及实现原理
      9. 深入理解 JSX
      10. React 的 Capture Value(捕获值)特性与解决方案
      11. React 重新渲染的场景以及对应的优化方案
      12. 强制重新渲染有哪些方式
      13. React.memo 、 useMemo 、 useCallback 对比
      14. PureComponent
      15. 无状态组件(Stateless Component)概念、原理及最佳实践
      16. React 组件的各种定义和声明方式
      17. React 中获取 DOM 引用的方式
      18. 高阶组件(HOC)
      19. React 组件间通信
      20. React 性能优化的思路
      21. react-dom
      22. React 事件系统
      23. React 中实现异步加载组件
      24. React 中错误捕获的方式
      25. React Class 类生命周期如何对应 Hooks
      26. React.createContext 与 useContext
      27. immer.js 在 React 中的使用
      28. Redux
      29. React 整体架构介绍
      30. React Fiber 节点的主要属性及其用途
      31. React 的源码结构分析
      32. 使用 useTransition 进行非阻塞渲染
      33. 使用 useDeferredValue 来延迟状态更新
      34. 使用 useInsertionEffect 注入 css-in-js
      35. 使用 useImperativeHandle 精确控制组件对外暴露能力
      36. 使用 useSyncExternalStore 来连接外部状态和 React 组件
      37. 使用 useId 生成唯一的 ID 标识符
      38. 把 useDebugValue 加入你的React调试工具库
      39. 说说 React 19 的最新的进展
      40. React Server Components (RSC)
      41. React 的 Diff 算法
      42. React Hooks 的原理
      43. 常见自定义 Hooks
      44. React 的优先级调度机制和打断处理
      45. 任务饥饿(Task Starvation)
      46. 为什么 React 需要 Fiber 架构,而 Vue 似乎不需要类似的机制
      47. React render 方法的原理和触发时机
      48. React 中的 Portal 事件冒泡机制
      49. React 的合成事件(Synthetic Event)和原生事件(Native Event)的执行顺序
      50. React 自动运行时(Automatic Runtime)
    3. 前端框架设计
      1. 前端框架设计概述
      2. 前端框架设计里的"权衡" 与"选择"
      3. 前端框架设计的核心要素
      4. 前端元框架
      5. 企业级框架
      6. 编译时框架 vs 运行时框架
      7. 前端框架现状及未来趋势
      8. 前端框架后面的金主及生态情况
      9. 前端框架的岛屿架构(Island Architecture)
      10. 实现一个简易版本的前端路由
      11. Next.js 与 Umi.js
      12. UmiJS 与 Remix
      13. umi 的数据流方案
      14. Next.js
      15. 对比 Next.js 与 Nuxt.js
      16. Remix 框架
  14. 前端工程化
    1. 前端基建
      1. 前端工程化
      2. 前端工程化历程
      3. 前端工程化 SOP
      4. 前端基建 SOP
      5. npm 私服搭建
      6. 如何提高前端研发效能
      7. 如何前端脚手架 "泼出去的水" 的问题
      8. 前端基础建设路线参考
      9. 开源的 git 托管工具
      10. DevOps 开源项目
      11. 圈复杂度
      12. 好文分享:美团的产研一体化协作平台
      13. 美团前端工程架构的演变
      14. 字节跳动现代 Web 开发实践
      15. 前端灰度发布
    2. 前端构建
      1. Webpack 5 的 Module Federation
      2. webpack 性能优化的思路
      3. vite 中如何使用 Module Federation
      4. 主流的前端构建工具
      5. Vite 和 Webpack 在热更新(HMR - Hot Module Replacement)机制上的主要区别
      6. 前端构建提速的体系化思路
      7. Rspack 分享
      8. Webpack 5
      9. Eslint 的原理
      10. Umi 4 的设计思路
      11. vite 之 import 关键词
      12. Turbopack 与 rspack
      13. 使用 Babel 重构或迁移前端工程
      14. Babel 插件开发
      15. Babel 的原理(篇一)
      16. Babel 的原理(篇二)
      17. Webpack 的三种hash模式
      18. Source Map 的本质和实现原理
      19. 浏览器对 Source Map 的支持机制和实现原理
      20. Vite 在开发时对 Source Map 的特殊之处
    3. 前端监控
      1. Node.js 中常见的内存泄漏场景及解决方案
      2. Node.js 中异常捕获和容错的常见处理方式
      3. 前端数据采集的原理及实现
      4. 时光机(录制与回放)的技术原理
      5. rrweb
      6. window.onerror 和 window.addEventListener 的区别?
      7. 前端错误的分类、优先级管理及处理策略
      8. 前端错误的分类和优先级管理建议
      9. 前端指标监控与业务指标监控
    4. 前端安全
      1. XSS:跨站脚本攻击
      2. CSRF:跨站请求伪造
      3. SSRF(服务器端请求伪造)攻击
      4. 内容安全策略(Content Security Policy,简称 CSP)
      5. X-XSS-Protection 头部、 Subresource Integrity (SRI)
      6. 前端安全相关
      7. 点击劫持 ( Clickjacking )
      8. HTTP 请求是否携带 Cookie
      9. 常见接口鉴权方式
      10. 常见的高危Web安全漏洞
      11. OAuth 2.0 认证
  15. 前端性能及体验
    1. 如何度量前端性能
    2. 性能优化思路
    3. 长列表或大数据渲染优化的一些思路
    4. 如何治理端侧性能
    5. 常见性能优化思路
    6. RAIL 模型
    7. 高性能插入 100000 个 DOM节点
    8. 人机交互与前端体验
    9. 最大偏移量的统计方法和优化建议
    10. PerformanceObserver API
    11. LCP 、白屏时间、首屏时间
    12. Chrome DevTools(篇一)
    13. Chrome DevTools(篇二)
    14. Chrome DevTools(篇三)
  16. 前端架构设计
    1. 前端资产
    2. 前端重构的时机
    3. 前端研发工作台
    4. 微前端原理(篇一)
    5. SystemJS 和模块联邦(Module Federation)的特点和差异
    6. 微前端原理(篇三:乾坤)
    7. 微前端原理(篇二:无界)
    8. JAMstack 架构
    9. 前端语言包切换
    10. 常见的设计模式
    11. 前端常见的架构思路:篇一
    12. Serverless(无服务器计算)
    13. 前端常见的架构思路:篇二
    14. 实现一个简单的插件系统
    15. 代客
    16. 度量前端架构
    17. 技术架构与业务架构
    18. 设计协同:D2C 、C2D
    19. 编程思想&范式
  17. 移动端与跨端
    1. 跨端(PC、移动端、小程序、Web 等)
    2. 跨端的核心技术点
    3. JavaScript Bridge(JSBridge)的原理
    4. H5 开发技巧相关
    5. taro 与 uni-app 对比
    6. 小程序的安全合规和性能优化
    7. 微信小程序的双线程设计
  18. 前端系统设计
    1. 在线协作文档设计
    2. UI 标记工具设计
    3. 图标库管理系统设计
    4. 转盘组件设计
    5. SSO 系统与权限系统设计
    6. 产品演示平台&培训平台
  19. 低代码
    1. 分享:基于低代码平台的三种开发模式
    2. 低代码平台的调试开发
    3. 低代码的研发搭建模式探讨
    4. 调研:Schema 协议设计(amis、schema 设计、事件流、Vdom 等)
    5. 调研:Amis 工作原理、自定义组件
    6. 调研:各类大会对低代码的分享
    7. 调研:低代码渲染设计思路
    8. 调研:编辑器&设计态如何设计?
    9. 调研:低代码引擎技术白皮书
    10. 低代码原理与标准
    11. 好文:低代码实现原理
    12. 好文:阿里低代码引擎和生态建设实战及思考
    13. 调研:各类大会对低代码的分享
    14. 好文:低代码探索之路
    15. 好文:低代码常见问题
    16. 精读:低代码的组件体系的建设和实践
    17. 调研:设计器交互体验
    18. 调研:低代码开发如何协同?
    19. 基于 Vue3 的低代码平台架构设计:篇一
    20. 低代码工程结构设计
  20. 前端的思考
    1. 前端的思考:随记
    2. 业务支撑与业务价值
    3. 大模型背景下的前端研发模式随记
    4. 前端工程师在 AI 时代的机会与挑战
    5. 前端开发与 AI 大模型的集成
  21. 第四部分 算法
  22. 前言
  23. 基础
    1. 算法核心框架
    2. 计算机算法的框架思维
    3. 基础数据结构
    4. 算法复杂度
    5. 刷题注意事项
    6. 刷题篇
  24. 数组
    1. 数组基础
      1. 列表:Python 描述
      2. 数组:JavaScript 描述
      3. 数组链表与内存缓存的关系
    2. 双指针
      1. 两数之和:无序
      2. 最长回文子串
      3. 盛最多水的容器:找两条线装水最多
      4. 三数之和
      5. 删除有序数组中的重复项
      6. 移除元素:移除指定元素
      7. 接雨水:下雨了柱子间能装多少水
      8. 颜色分类
      9. 删除有序数组中的重复项 II:最多允许重复两次
      10. 合并两个有序数组
      11. 验证回文串
      12. 两数之和 II - 输入有序数组
      13. 移动零 1
      14. 移动零
      15. 递增的三元子序列
      16. 反转字符串
      17. 反转字符串中的元音字母
      18. 有序转化数组:f(x) = a * x * x + b * x + c
      19. 判断子序列
      20. 压缩字符串:b12 => b,1,2 代替
      21. 匹配子序列的单词数: words中是 s 的子序列的单词个数
      22. 有序数组的平方
      23. 交替合并字符串
    3. 滑动窗口
      1. 无重复字符的最长子串
      2. 最小覆盖子串
      3. 重复的DNA序列
      4. 长度最小的子数组
      5. 存在重复元素 II :两个重复元素的距离小于等于 k
      6. 存在重复元素 III:两个数的差值不超过 t + 两个数的位置差不超过 k
      7. 至多包含 K 个不同字符的最长子串:找出至多包含 k 个 不同 字符的最长子串
      8. 至少有 K 个重复字符的最长子串
      9. 替换后的最长重复字符:替换 k 次后最长重复字符数
      10. 找到字符串中所有字母异位词
      11. 字符串的排列
      12. 子数组最大平均数 I
      13. 乘积小于 K 的子数组:子数组内所有元素的乘积严格小于 k 的连续子数组的数目
      14. 最大连续1的个数 III:最多 k 次把 0 变成 1,数组中连续 1 的最大个数
      15. 定长子串中元音的最大数目
      16. 删掉一个元素以后全为 1 的最长子数组
      17. 将 x 减到 0 的最小操作数
    4. 二维数组
      1. 最长公共前缀
      2. 二维数组的遍历技巧
      3. 矩阵置零
      4. 搜索二维矩阵:打平成一维也严格递增
      5. 搜索二维矩阵 II:行递增、列递增
      6. 有序矩阵中第 K 小的元素
      7. 重塑矩阵:mn 转成 rc
      8. 转置矩阵
      9. 二维网格迁移
      10. 将矩阵按对角线排序
      11. 相等行列对
    5. 前缀和、前缀积、差分数组
      1. 前缀和
      2. 前缀积
      3. 差分数组
      4. 最大子数组和
      5. 除自身以外数组的乘积
      6. 区域和检索 - 数组不可变
      7. 二维区域和检索 - 矩阵不可变
      8. 和等于 k 的最长子数组长度
      9. 区间加法
      10. 连续的子数组和
      11. 连续数组
      12. 和为 K 的子数组:返回 该数组中和为 k 的子数组的个数
      13. 寻找数组的中心下标
      14. 和可被 K 整除的子数组
      15. 拼车
      16. 航班预订统计
      17. 表现良好的最长时间段
      18. 矩阵区域和
      19. 最后 K 个数的乘积
    6. 其他
      1. 缺失的第一个正数:找第一个缺失的正整数
      2. 合并区间
      3. 反转字符串中的单词
      4. 多数元素
      5. 轮转数组
      6. 种花问题
      7. 拥有最多糖果的孩子
      8. 确定两个字符串是否接近
      9. 找到最高海拔
      10. 找出两数组的不同
  25. 链表
    1. 链表:JavaScript 描述
    2. 链表:Python 描述
    3. 两数相加:逆序存储,且只能存一位数字
    4. 反转单链表:反转全部、反转前 N 个节点、反转一部分
    5. 删除链表的倒数第 N 个结点
    6. 合并两个有序链表
    7. 合并 K 个升序链表
    8. 两两交换链表中的节点
    9. 旋转链表:将链表每个节点向右移动 k 个位置
    10. 删除排序链表中的重复元素 II:删除所有重复的节点
    11. 删除排序链表中的重复元素:去重
    12. 分隔链表
    13. 随机链表的复制
    14. 判断链表是否有环
    15. 找链表中第一个入环节点
    16. 重排链表:1→n-1→2→n-2→...
    17. 相交链表
    18. 反转链表
    19. 回文链表
    20. 奇偶链表
    21. 链表的中间结点:寻找链表的中间节点
    22. 从未排序的链表中移除重复元素:不是去重
    23. 链表最大孪生和
    24. 删除链表的中间节点
  26. 栈、列队、哈希表
      1. 栈:Python 描述
      2. 有效的括号:判断括号字符串是否合法的
      3. 简化路径
      4. 用队列实现栈
      5. 字符串解码
      6. 小行星碰撞
      7. 使括号有效的最少添加
      8. 从字符串中移除星号
    1. 列队
      1. 单调列队算法
      2. 列队:Python 描述
      3. 双向队列:Python 描述
      4. 优先级队列及 TopK 问题
      5. 优先级队列:入队函数最简易实现(sort)
      6. 优先级队列:Leetcode 中提供的数据结构介绍
      7. 使用两个栈实现队列
      8. 滑动窗口最大值
      9. 查找和最小的 K 对数字
      10. Dota2 参议院
      11. 最近的请求次数
    2. 哈希表
      1. 哈希表概述
      2. 哈希集合
      3. 字母异位词分组:按字母异位词分组
      4. 最长连续序列
      5. 字符串中的第一个唯一字符
      6. 找不同
      7. 数组中重复的数据:找出所有出现 两次 的整数,并以数组形式返回
      8. 独一无二的出现次数
      9. K 和数对的最大数目
    1. 基础
      1. 树的一些基本概念
      2. 二叉树基本概念:Python 描述
      3. 二叉树的存储方式
      4. 二叉树的遍历:Python 描述
      5. 二叉树的遍历: DFS(前中后序遍历)、BFS(层序遍历)
      6. 多叉树的遍历: DFS(前中后序遍历)、BFS(层序遍历)
      7. 二叉树算法概述
      8. 二叉树的两种解题思维
      9. 二叉树的分解问题思路
      10. 二叉树的前中后序遍历详解
      11. 二叉树遍历的迭代解法
      12. 多叉树的遍历:Python 描述
      13. 二叉树与单链表的关系
      14. AVL 树和红黑树 → 都是 BST
      15. 其他树结构
    2. 二叉树基础
      1. 二叉树的最大深度
      2. 二叉树展开为链表
      3. 填充每个节点的下一个右侧节点指针
      4. 二叉树的前序遍历
      5. 二叉树的右视图
      6. 完全二叉树的节点个数
      7. 二叉搜索树的最近公共祖先:p 和 q 一定在树中
      8. 二叉树的最近公共祖先:p 和 q 一定在树中
      9. 验证二叉树的前序序列化
      10. 扁平化嵌套列表迭代器:惰性展开多叉树
      11. 二叉树的直径:左右子树的最大深度之和
      12. 叶子相似的树
      13. 二叉树的最近公共祖先 II:p 和 q 不一定在树中
      14. 二叉树的最近公共祖先 III:包含 parent 指针
      15. 二叉树的最近公共祖先 IV:多个节点的最近公共祖先
      16. 找到二叉树中的距离:p 到 q 的路径上边的数目
    3. 遍历一遍的思路
      1. 二叉树的中序遍历
      2. 二叉树的最小深度
      3. 路径总和:是否存在根节点到叶子节点的路径和为 target
      4. 路径总和 II :找到所有从根节点到叶子节点路径总和等于 target 的路径
      5. 求根节点到叶节点数字之和
      6. 二叉树的后序遍历
      7. 二叉树的所有路径:返回二叉树的所有路径,以a→b的方式
      8. 二叉树最长连续序列:所有路径中,求最长连续序列的长度
      9. 嵌套列表加权和
      10. 嵌套列表加权和 II
      11. 字典序排数
      12. 左叶子之和
      13. 将二叉搜索树转化为排序的双向链表
      14. 路径总和 III:不需要从根节点查找,返回满足条件的个数
      15. 找树左下角的值:找出该二叉树的 最底层 最左边 节点的值
      16. N 叉树的最大深度
      17. 另一棵树的子树:root 是否包含 subRoot
      18. N 叉树的前序遍历
      19. N 叉树的后序遍历
      20. 在二叉树中增加一行
      21. 路径总和 IV
      22. 二叉搜索树的范围和:返回给定区间所有结点的值的和
      23. 翻转二叉树以匹配先序遍历:翻转节点后的树的先序遍历顺序是否能够匹配给定的数组顺序
      24. 二叉树的垂序遍历
      25. 从叶结点开始的最小字符串
      26. 二叉树的堂兄弟节点:x 和 y 是否是堂兄弟
      27. 从根到叶的二进制数之和
      28. 二叉树寻路:之字形状标序号
      29. 二叉树着色游戏
      30. 最小公共区域
      31. 在受污染的二叉树中查找元素
      32. 祖父节点值为偶数的节点和
      33. 找出克隆二叉树中的相同节点:使用 A 中的 target 去找 B 中对应节点
      34. 判断给定的序列是否是二叉树从根到叶的路径
      35. 统计二叉树中好节点的数目:
      36. 二叉树中的伪回文路径
      37. 寻找所有的独生节点
      38. 找到二叉树中最近的右侧节点:找到 节点 u 所在层中距离最近的右侧节点
      39. 检查两棵二叉表达式树是否等价
      40. 从二叉树一个节点到另一个节点每一步的方向
    4. 分解问题的思路
      1. 相同的树:判断两个二叉树是否相同
      2. 对称二叉树:判断树是否轴对称
      3. 二叉树中的最大路径和:不一定经过根节点,可以从左到右边
      4. LCR.子结构判断:A 是否包含 B
      5. 翻转二叉树:翻转二叉树的两种解题思路
      6. 合并二叉树:两个树强强组合
      7. 二叉树剪枝:返回移除了所有不包含 1 的子树的原二叉树
      8. 翻转等价二叉树:判断这两棵二叉树是否是翻转等价的
      9. 二叉树中的链表:二叉树中是否包含某条单链表
      10. 克隆 N 叉树
    5. 后序位置
      1. 平衡二叉树
      2. 统计同值子树
      3. 最大二叉搜索子树:给定一个二叉树,找到其中最大的二叉搜索树(BST)子树,并返回该子树的大小
      4. 寻找二叉树的叶子节点
      5. 出现次数最多的子树元素和
      6. 二叉树最长连续序列 II:最长连续的路径
      7. 二叉树的坡度:返回整个树的坡度
      8. 均匀树划分:能否分成两棵节点值之和相等的子树
      9. 最长同值路径:返回边的个数
      10. 具有所有最深节点的最小子树
      11. 监控二叉树
      12. 节点与其祖先之间的最大差值
      13. 子树的最大平均值
      14. 删除给定值的叶子节点
      15. 分裂二叉树的最大乘积:删除 1 条边,使二叉树分裂成两棵子树,且它们子树和的乘积尽可能大
      16. 二叉树中的最长交错路径
      17. 收集树上所有苹果的最少时间
      18. 统计最高分的节点数目
    6. 构造与序列化
      1. 从前序与中序遍历序列构造二叉树
      2. 从中序与后序遍历序列构造二叉树
      3. 将有序数组转换为二叉搜索树
      4. 有序链表转换二叉搜索树
      5. 二叉搜索树迭代器
      6. 二叉树的序列化与反序列化
      7. 序列化和反序列化二叉搜索树
      8. 从字符串生成二叉树:由包含括号的字符串生成二叉树
      9. 根据二叉树创建字符串:二叉树转字符串 → 1(2(4))(3)
      10. 最大二叉树:根据一个数组构建最大二叉树
      11. 根据前序和后序遍历构造二叉树
      12. 所有可能的真二叉树:节点数为 n 的所有满二叉树
    7. 二叉搜索树(BST)
      1. 二叉搜索树:Python 描述
      2. 二叉搜索树的增删改查模板
      3. 不同的二叉搜索树 II:列举 1-n 能构造出的所有BST
      4. 不同的二叉搜索树:1-n个数字能构造出多少个 BST
      5. 验证二叉搜索树
      6. 恢复二叉搜索树:恰好两个节点的值被错误地交换,请修正
      7. 二叉搜索树中第 K 小的元素
      8. 验证二叉搜索树的前序遍历序列
      9. 最接近的二叉搜索树值:二叉搜索树中找到最接近目标值 target 的数值,如果有多个答案,返回最小的那个
      10. 二叉搜索树中的中序后继:比 p.val 大的节点中键值最小的节点
      11. 删除二叉搜索树中的节点
      12. 二叉搜索树中的众数:找出并返回 BST 中的所有出现频率最高的元素
      13. 二叉搜索树中的中序后继 II:包含 parent节点
      14. 二叉搜索树的最小绝对差:任意两个节点的差值的绝对值最小值
      15. 把二叉搜索树转换为累加树:每个节点变成 >= 该节点的所有节点之和
      16. 两数之和 IV - 输入二叉搜索树,是否存在
      17. 修剪二叉搜索树:通过修剪二叉搜索树,使得所有节点的值在 low~ high 之间
      18. 二叉树中第二小的节点:root 总是小于子节点,找第二小的值
      19. 二叉搜索树中的搜索
      20. 二叉搜索树中的插入操作
      21. 拆分二叉搜索树:大于 k 的子树 和 小于 k 的子树
      22. 递增顺序搜索树: BST转成单链表
      23. 前序遍历构造二叉搜索树:前序位置构造二叉搜索树
      24. 从二叉搜索树到更大和树:BST 转化累加树
      25. 查找两棵二叉搜索树之和:从两棵BST中各找出一个节点, 满足 2sum = target
      26. 两棵二叉搜索树中的所有元素:合并两个 BST,返回有序数组
      27. 二叉搜索子树的最大键值和:二叉树的 BST 子树最大和
      28. 将二叉搜索树变平衡
    8. 层次遍历
      1. 二叉树的层序遍历
      2. 二叉树的锯齿形层序遍历:Z 字形遍历
      3. 二叉树的层序遍历 II:自底向上的层序遍历
      4. 填充每个节点的下一个右侧节点指针 II
      5. 将 N 叉树编码为二叉树:可以将 N 叉树编码为二叉树,并能将该二叉树解码为原 N 叉树
      6. 在每个树行中找最大值
      7. 二叉树的层平均值
      8. 二叉树最大宽度
      9. 二叉树最近的叶节点:返回树中与目标值 k 最近的叶子节点
      10. 二叉树中所有距离为 K 的结点:返回到目标结点 target 距离为 k 的所有结点的值组成的数组
      11. 完全二叉树插入器:设计一种算法,将一个新节点插入到一棵完全二叉树中,并在插入后保持其完整
      12. 二叉树的完全性检验:判断完全二叉树
      13. 最大层内元素和:返回哪一层和最大
      14. 层数最深叶子节点的和:返回最后一层的和
      15. 找到二叉树中最近的右侧节点:u 节点最近的右侧节点
      16. 奇偶树:第 0 层递增,第 1 层递减
      1. 二叉堆
      2. 数据结构中的堆和内存中的堆的区别
      3. 堆内存和栈内存的区别
      4. 二叉堆与优先级队列的关系
    1. 基本概念:篇一
    2. 基本概念:篇二
    3. 图的实现
    4. 图的 DFS 遍历
    5. 图的 BFS 遍历
    6. 环检测算法:有向图的环检测
    7. 拓扑排序
    8. 二分图
    9. 并查集(Union Find)
    10. 最小生成树: Kruskal 算法
    11. 最小生成树:Prim 算法
    12. Dijkstra 算法
    13. 课程表:是否可能完成所有课程的学习
    14. 课程表 II:返回你为了学完所有课程所安排的学习顺序
    15. 以图判树:判断图是否可以生成树
    16. 搜寻名人:返回名人的编号,不存在返回 -1
    17. 网络延迟时间
    18. 判断二分图:判断一幅图是否是二分图
    19. 所有可能的路径
    20. 可能的二分法:将互相讨厌的人分成两个组
    21. 最低成本连通所有城市
    22. 概率最大的路径
    23. 连接所有点的最小费用
    24. 最小体力消耗路径
  27. 其他数据结构
    1. 常数时间删除、查找数组中的任意元素
    2. LRU 算法
    3. LFU 缓存
  28. 搜索与排序
    1. 搜索
      1. 二分搜索
        1. 搜索旋转排序数组:从两个有序组成的数组中找目标值
        2. 在排序数组中查找元素的第一个和最后一个位置
        3. 搜索插入位置:有序数组中插入 target,保证有序,返回插入的位置
        4. 搜索旋转排序数组 II:从两个排序数组中查找目标值,但存在重复元素
        5. 寻找峰值:峰值元素是指其值严格大于左右相邻值的元素
        6. LCR.172.统计目标成绩的出现次数
        7. LCR.点名:从一个升序数组中找出缺失的数字
        8. 找到 K 个最接近的元素:最靠近 x 的 k 个数
        9. 二分查找
        10. 山脉数组的峰顶索引:开口向上的抛物线
      2. 搜索算法总结
    2. 排序
      1. 排序算法基础:篇一
      2. 排序算法基础:篇二
      3. 选择排序
      4. 冒泡排序
      5. 插入排序
      6. 快速排序
      7. 归并排序
      8. 数组中的第K个最大元素
      9. H 指数
      10. 计算右侧小于当前元素的个数
      11. 区间和的个数
      12. 翻转对
      13. 煎饼排序
  29. 回溯、DFS、BFS
    1. 回溯算法
      1. 回溯算法解题框架
      2. 排列、组合、子集问题合集
      3. 球盒模型
      4. 回溯算法解数独
      5. 回溯算法解括号生成
      6. 划分为 k 个相等的子集
      7. SKU 排列
      8. 电话号码的字母组合
      9. 根据传入的值 n,生成所有小于 n 的二进制
      10. 组合总和 II :元素可重,不可复选
      11. 全排列:元素不可重复,不可复选
      12. 全排列 II:元素可重复,不可复选
      13. 组合:元素不重复不可复选
      14. 子集:元素不重复不可复选
      15. 子集 II:元素重复,不可复选
      16. 复原 IP 地址
      17. 单词拆分 II:加空格生成多少种句子
      18. 连续差相同的数字
    2. DFS
      1. 回溯算法与DFS算法的区别
      2. 二维矩阵遍历框架
      3. 岛屿数量
      4. 除法求值:货币兑换
      5. 省份数量
      6. 不同岛屿的数量:形状不同的岛屿
      7. 岛屿的最大面积:半岛也算
      8. 钥匙和房间
      9. 统计封闭岛屿的数目:全岛的数量
      10. 重新规划路线
      11. 统计子岛屿:grid2 被 grid1包含多少个岛屿?
    3. BFS
      1. BFS 算法框架
      2. 双向 BFS 优化
      3. 杀掉进程
      4. 打开转盘锁
      5. 滑动谜题
      6. 腐烂的橘子
      7. 迷宫中离入口最近的出口
  30. 动态规划
    1. 动态规划
      1. 斐波那契数列
      2. 动态规划解题套路框架:以最小零钱为例说明
      3. 如何查找状态转移方程:最长递增子序列与俄罗斯套娃
      4. base case 和备忘录的初始值怎么定:下降路径的最小和
      5. 最优子结构原理 和 DP 数组遍历方向
      6. 动态规划穷举的两种视角:不同的子序列个数
      7. 动态规划和回溯算法:单词拆分与单词拆分 II
      8. 对动态规划进行空间压缩
      9. 子序列:最小编辑距离
      10. 子序列:最大子数组
      11. 子序列:最长公共子序列问题
      12. 子序列: 动态规划之子序列问题解题模板(最长回文子序列)
      13. 背包:0-1 背包问题
      14. 背包:数组是否可以分割两个子集,使得这两子集的元素和相等
      15. 完全背包问题:零钱兑换
      16. 背包问题:目标和
      17. 地下城游戏
      18. 最小路径和
      19. 不同的子序列: s 的子序列中 t 出现的个数
      20. 买卖股票的最佳时机
      21. 买卖股票的最佳时机 II
      22. 单词拆分:给定的字符串是否能由给定的单词集合组合成
      23. 买卖股票的最佳时机 IV
      24. 最长递增子序列:最长递增子序列数量
      25. 零钱兑换:需要的最小硬币数
      26. 俄罗斯套娃信封问题:最长子序列的二维版本
      27. 下降路径最小和:从第一行下降到最后一行最小路径合为多少?
    2. 贪心算法
      1. 贪心算法:区间调度问题
      2. 跳跃游戏 II
      3. 跳跃游戏
  31. 其他
    1. 数学运算
      1. 字符串乘法计算
      2. 反直觉的概率问题
      3. 丑数 II
      4. 字符串的最大公因子
    2. 其他算法
      1. 区间问题
      2. 阶乘算法题
      3. 一行代码就能解决的算法题
      4. 完美矩阵
      5. 分割数组为连续子序列:斗地主的顺子
      6. 为运算表达式设计优先级
      7. 丑数问题
      8. 常见的随机算法
      9. 如何同时寻找缺失和重复的元素
      10. 判断一个数是否是素数
      11. 位运算技巧
      12. 其他技巧总结
      13. 只出现一次的数字
      14. 位1的个数
      15. 2 的幂:判断一个数是不是 2 的指数
      16. 丢失的数字
  32. 第五部分 计算机科学
  33. 前言
  34. Python 编程语言
    1. Python 语言基础
    2. Python 函数与模块
    3. Python 类
    4. Python 文件与异常处理
  35. 计算机网络篇
    1. 关于HTTP 的一些常见问题汇总
    2. 常见的几种 POST 数据提交方式
    3. 幂等与非幂等、HTTP 常见状态码
    4. 本地配置 SSH
  36. 数据库
    1. 数据库事务(Transaction)的概念和重要性
  37. 其他
    1. 最常见的开源协议
  38. 第六部分 产品
  39. 前言
  40. XaaS
  41. 关于