- 前言
- 第一部分 AGI
- 1. 前言
- 2. 入门篇
❱
- 2.1. chatGPT 是什么
- 2.2. chatGPT 的原理
- 2.3. 大模型是如何训练的?
- 2.4. LangChain(篇一:基础入门篇)
- 2.5. LangChain 概述
- 2.6. Dify notes
- 3. Agent
❱
- 3.1. Agent 是什么
- 3.2. Agent 工程架构图
- 3.3. Agent 的进化之路
- 第二部分 前端
- 4. 前言
- 5. Web 技术概述
❱
- 5.1. 名词解释
- 5.2. Web 技术概述
- 5.3. 前端技术
- 5.4. 现代 Web 技术现状
- 5.5. Web 新兴技术
- 6. HTML
❱
- 6.1. HTML 概述
- 6.2. HTML 标签与 HTML 属性
- 6.3. HTML 技术关键词
- 6.4. HTML 技术清单
- 6.5. HTML 标签
- 6.6. Web Components
- 6.7. HTML 标准规范
- 6.8. 响应式图片
- 6.9. HTML 模板语言
- 7. CSS
❱
- 7.1. CSS 简介
- 7.2. 媒体查询
- 7.3. CSS 兼容性相关
- 7.4. 回流和重绘
- 7.5. 开启 GPU 硬件加速的原理
- 7.6. 盒模型
- 7.7. BFC 与外边距重叠
- 7.8. CSS 布局都有哪些
- 7.9. CSS 定位或布局相关的参考坐标系
- 7.10. CSS 定位
- 7.11. 滚动自动吸附效果与吸顶效果
- 7.12. CSS 变量
- 7.13. CSS 的计算属性
- 7.14. CSS 处理器
- 7.15. CSS 选择器的优先级
- 7.16. CSS Houdini API
- 7.17. Tailland CSS
- 7.18. CSS 性能优化思路
- 7.19. rem 和 vw、vh
- 8. JavaScript
❱
- 8.1. JavaScript 简介
- 8.2. JavaScript 的组成
- 8.3. JavaScript 的核心语法
- 8.4. JavaScript 异步编程简介
- 8.5. JavaScript 异步编程:Promise 专题篇一
- 8.6. JavaScript 异步编程:Promise 专题篇二
- 8.7. JavaScript 异步编程:async、await 的实现原理
- 8.8. JavaScript 异步编程:Thunk 函数
- 8.9. 实现批量请求并支持控制最大并发数
- 8.10. JavaScript 的垃圾回收机制
- 8.11. JavaScript 引擎
- 8.12. JavaScript 对象
- 8.13. JavaScript 的单线程
- 8.14. JavaScript 内存泄漏场景及其解决方案
- 8.15. 深拷贝与浅拷贝
- 8.16. apply、call、bind 的区别及简易实现
- 8.17. 遍历对象的方式
- 8.18. javascript 中实现继承的方式
- 8.19. ES6(ES2015) 到 ES2024 的主要特性
- 8.20. class 中各种方法定义的区别
- 8.21. WeakRef 与 FinalizationRegistry
- 8.22. Array.reduce
- 8.23. this 指向问题汇总
- 8.24. BigInt 类型
- 8.25. 原型链
- 9. TypeScript
❱
- 9.1. Typescript 基础篇
- 9.2. type 和 interface 的区别
- 9.3. TS 常见问题
- 9.4. interface
- 9.5. Interface 中的运算符操作
- 9.6. TypeScript 中与类型相关的运算符
- 9.7. TypeScript 的泛型(Generics)
- 9.8. TypeScript 项目中使用 node_modules 中定义的全局类型
- 10. 浏览器
❱
- 10.1. 哪些事件不会冒泡的事件,以及为什么不支持冒泡?
- 10.2. 使用 requestAnimationFrame 批量处理操作的原理
- 10.3. MessageChannel
- 10.4. 如何检测页面是否在前台运行
- 10.5. 为什么要用 setTimeout 模拟 setInterval ?
- 10.6. 浏览器本地如何读取并处理本地大文件
- 10.7. WebAssembly (Wasm)
- 10.8. Shadow DOM 中的 closed mode 和 open mode
- 10.9. 堆叠上下文 与 z-index 的关系
- 10.10. 浏览器的渲染原理
- 10.11. 渲染层、复合层、层叠上下文对比
- 10.12. 渲染层(Paint Layer)和合成层(Composite Layer)
- 10.13. 渲染层(Paint Layer)和层叠上下文(Stacking Context)
- 10.14. 浏览器中如何查找内存泄漏
- 10.15. 现代 Chrome 浏览器架构设计
- 10.16. requestIdleCallback
- 10.17. Shadow dom 与 Web Component
- 10.18. BroadcastChannel 和 MessageChannel 对比
- 10.19. 跨域与跨页面通讯
- 10.20. 跨域时请求的实际发送情况分析
- 10.21. 浏览器实现截图
- 10.22. AbortController
- 10.23. queueMicrotask
- 10.24. BroadcastChannel
- 10.25. 浏览器的宏任务(MacroTask)的优先级
- 10.26. IndexedDB
- 10.27. cookie 的有效期设置为 0 会怎么样?
- 11. Node.js
❱
- 11.1. cjs 与 esm
- 11.2. Nodejs 加载 JSON 文件
- 11.3. commonjs 的 require 机制
- 11.4. 常用的 package.json 字段说明
- 11.5. Nodejs 的单线程与多核
- 11.6. 流与pipe
- 11.7. Node.js 中的通信方式都有哪些
- 11.8. nodejs server 端如何清除 cookie
- 11.9. Node.js 中提高网络传输速度的主要方法
- 11.10. RESTful 接口规范
- 11.11. TCP 粘包
- 11.12. TIME_WAIT 过多的原因以及解决方案
- 11.13. socket hang up
- 11.14. ECONNRESET
- 11.15. Koa 的核心原理
- 11.16. Koa 与 express 对比
- 11.17. 实现一个简易版的 Koa
- 11.18. Nginx 介绍
- 11.19. pnpm(performant npm)
- 11.20. koa 的中间件机制
- 12. Vue
❱
- 12.1. Vue3 基础:篇一
- 12.2. Vue3 基础:篇二
- 12.3. Vue3 基础:篇三
- 12.4. Vue3 中 is 属性的使用方法和应用场景
- 12.5. Vue3 组件
- 12.6. Vue 的整体设计思路
- 12.7. Vue3 的响应式原理:effect、computed、watch 的实现原理
- 12.8. Vue3 中 effect 的调度选项(scheduler)使用示例
- 12.9. Vue3 的非原始值响应式方案(Map、WeakMap 、Set 、WeakSet )
- 12.10. vue3 watch 的详细用法(取消监听、恢复监听及清理副作用等)
- 12.11. Vue3 中原始值的响应方案
- 12.12. Vue3 渲染器的原理和实现
- 12.13. Vue3 的 diff 算法
- 12.14. Vue3 的 Diff 算法复杂的分析
- 12.15. Vue3 事件与原生事件的关系和冒泡机制差异分析
- 12.16. Vue3 组件的实现原理
- 12.17. 异步组件和函数式组件的实现原理
- 12.18. Vue3 异步组件的使用
- 12.19. Vue3 中 Transition 组件的实现原理
- 12.20. Vue3 中 keepAlive组件的实现原理
- 12.21. Vue3中 Teleport 组件的实现原理
- 12.22. Vue3 的编译器原理(篇一:基本实现)
- 12.23. Vue3 的编译器原理(篇二:完善的 HTML 解析器)
- 12.24. Vue3 的编译器原理(篇三:编译优化)
- 12.25. Vue3 的服务端渲染(SSR)原理(同构原理)
- 12.26. Vue3 中可使用 JSX 原理
- 12.27. Vue3 中不常用的 API
- 12.28. Vue3 源码主要包功能介绍分析
- 12.29. vue3 中实现类似于 React 高阶组件的功能?
- 12.30. Pinia 状态管理库文档笔记
- 12.31. Vue3 的页面渲染流程
- 12.32. created 和 mounted 这两个生命周期钩子的区别
- 12.33. v-memo 介绍
- 12.34. Vue3 的模板编译也可以发生在运行时
- 12.35. Vue3 生态最新动态
- 13. React
❱
- 13.1. useEffect
- 13.2. useLayoutEffect 和 useEffect
- 13.3. 为什么 React 要引入 Hooks
- 13.4. 为什么不应该在循环、条件或嵌套函数中使用 Hooks
- 13.5. React 的 Render Props
- 13.6. React 的架构设计演变
- 13.7. useMemo 、 useCallback、Vue 的 computed
- 13.8. useRef、forwardRef 的用法及实现原理
- 13.9. 深入理解 JSX
- 13.10. React 的 Capture Value(捕获值)特性与解决方案
- 13.11. React 重新渲染的场景以及对应的优化方案
- 13.12. 强制重新渲染有哪些方式
- 13.13. React.memo 、 useMemo 、 useCallback 对比
- 13.14. PureComponent
- 13.15. 无状态组件(Stateless Component)概念、原理及最佳实践
- 13.16. React 组件的各种定义和声明方式
- 13.17. React 中获取 DOM 引用的方式
- 13.18. 高阶组件(HOC)
- 13.19. React 组件间通信
- 13.20. React 性能优化的思路
- 13.21. react-dom
- 13.22. React 事件系统
- 13.23. React 中实现异步加载组件
- 13.24. React 中错误捕获的方式
- 13.25. React Class 类生命周期如何对应 Hooks
- 13.26. React.createContext 与 useContext
- 13.27. immer.js 在 React 中的使用
- 13.28. Redux
- 13.29. React 整体架构介绍
- 13.30. React Fiber 节点的主要属性及其用途
- 13.31. React 的源码结构分析
- 13.32. 使用 useTransition 进行非阻塞渲染
- 13.33. 使用 useDeferredValue 来延迟状态更新
- 13.34. 使用 useInsertionEffect 注入 css-in-js
- 13.35. 使用 useImperativeHandle 精确控制组件对外暴露能力
- 13.36. 使用 useSyncExternalStore 来连接外部状态和 React 组件
- 13.37. 使用 useId 生成唯一的 ID 标识符
- 13.38. 把 useDebugValue 加入你的React调试工具库
- 13.39. 说说 React 19 的最新的进展
- 13.40. React Server Components (RSC)
- 13.41. React 的 Diff 算法
- 13.42. React Hooks 的原理
- 13.43. 常见自定义 Hooks
- 13.44. React 的优先级调度机制和打断处理
- 13.45. 任务饥饿(Task Starvation)
- 13.46. 为什么 React 需要 Fiber 架构,而 Vue 似乎不需要类似的机制
- 13.47. React render 方法的原理和触发时机
- 13.48. React 中的 Portal 事件冒泡机制
- 13.49. React 的合成事件(Synthetic Event)和原生事件(Native Event)的执行顺序
- 13.50. React 自动运行时(Automatic Runtime)
- 14. 前端框架设计
❱
- 14.1. 前端框架设计概述
- 14.2. 前端框架设计里的"权衡" 与"选择"
- 14.3. 前端框架设计的核心要素
- 14.4. 前端元框架
- 14.5. 企业级框架
- 14.6. 编译时框架 vs 运行时框架
- 14.7. 前端框架现状及未来趋势
- 14.8. 前端框架后面的金主及生态情况
- 14.9. 前端框架的岛屿架构(Island Architecture)
- 14.10. 实现一个简易版本的前端路由
- 14.11. Next.js 与 Umi.js
- 14.12. UmiJS 与 Remix
- 14.13. umi 的数据流方案
- 14.14. Next.js
- 14.15. 对比 Next.js 与 Nuxt.js
- 14.16. Remix 框架
- 15. 前端基建
❱
- 15.1. 前端工程化
- 15.2. 前端工程化历程
- 15.3. 前端工程化 SOP
- 15.4. 前端基建 SOP
- 15.5. npm 私服搭建
- 15.6. 如何提高前端研发效能
- 15.7. 如何前端脚手架 "泼出去的水" 的问题
- 15.8. 前端基础建设路线参考
- 15.9. 开源的 git 托管工具
- 15.10. DevOps 开源项目
- 15.11. 圈复杂度
- 15.12. 分享:美团的产研一体化协作平台
- 15.13. 美团前端工程架构的演变
- 15.14. 字节跳动现代 Web 开发实践
- 15.15. 前端灰度发布
- 16. 前端构建
❱
- 16.1. Webpack 5 的 Module Federation
- 16.2. webpack 性能优化的思路
- 16.3. vite 中如何使用 Module Federation
- 16.4. 主流的前端构建工具
- 16.5. Vite 和 Webpack 在热更新(HMR - Hot Module Replacement)机制上的主要区别
- 16.6. 前端构建提速的体系化思路
- 16.7. Rspack 分享
- 16.8. Webpack 5
- 16.9. Eslint 的原理
- 16.10. Umi 4 的设计思路
- 16.11. vite 之 import 关键词
- 16.12. Turbopack 与 rspack
- 16.13. 使用 Babel 重构或迁移前端工程
- 16.14. Babel 插件开发
- 16.15. Babel 的原理(篇一)
- 16.16. Babel 的原理(篇二)
- 16.17. Webpack 的三种hash模式
- 16.18. Source Map 的本质和实现原理
- 16.19. 浏览器对 Source Map 的支持机制和实现原理
- 16.20. Vite 在开发时对 Source Map 的特殊之处
- 17. 前端监控
❱
- 17.1. Node.js 中常见的内存泄漏场景及解决方案
- 17.2. Node.js 中异常捕获和容错的常见处理方式
- 17.3. 前端数据采集的原理及实现
- 17.4. 时光机(录制与回放)的技术原理
- 17.5. rrweb
- 17.6. window.onerror 和 window.addEventListener 的区别?
- 17.7. 前端错误的分类、优先级管理及处理策略
- 17.8. 前端错误的分类和优先级管理建议
- 17.9. 前端指标监控与业务指标监控
- 18. 前端性能及体验
❱
- 18.1. 如何度量前端性能
- 18.2. 性能优化思路
- 18.3. 长列表或大数据渲染优化的一些思路
- 18.4. 如何治理端侧性能
- 18.5. 常见性能优化思路
- 18.6. RAIL 模型
- 18.7. 高性能插入 100000 个 DOM节点
- 18.8. 人机交互与前端体验
- 18.9. 最大偏移量的统计方法和优化建议
- 18.10. PerformanceObserver API
- 18.11. LCP 、白屏时间、首屏时间
- 18.12. Chrome DevTools(篇一)
- 18.13. Chrome DevTools(篇二)
- 18.14. Chrome DevTools(篇三)
- 19. 前端安全
❱
- 19.1. XSS:跨站脚本攻击
- 19.2. CSRF:跨站请求伪造
- 19.3. SSRF(服务器端请求伪造)攻击
- 19.4. 内容安全策略(Content Security Policy,简称 CSP)
- 19.5. X-XSS-Protection 头部、 Subresource Integrity (SRI)
- 19.6. 前端安全相关
- 19.7. 点击劫持 ( Clickjacking )
- 19.8. HTTP 请求是否携带 Cookie
- 19.9. 常见接口鉴权方式
- 19.10. 常见的高危Web安全漏洞
- 19.11. OAuth 2.0 认证
- 20. 前端架构设计
❱
- 20.1. 前端资产
- 20.2. 前端重构的时机
- 20.3. 前端研发工作台
- 20.4. 微前端原理(篇一)
- 20.5. SystemJS 和模块联邦(Module Federation)的特点和差异
- 20.6. 微前端原理(篇三:乾坤)
- 20.7. 微前端原理(篇二:无界)
- 20.8. JAMstack 架构
- 20.9. 前端语言包切换
- 20.10. 常见的设计模式
- 20.11. 前端常见的架构思路:篇一
- 20.12. Serverless(无服务器计算)
- 20.13. 前端常见的架构思路:篇二
- 20.14. 实现一个简单的插件系统
- 20.15. 代客
- 20.16. 度量前端架构
- 20.17. 技术架构与业务架构
- 20.18. 设计协同:D2C 、C2D
- 20.19. 编程思想&范式
- 21. 移动端与跨端
❱
- 21.1. 跨端(PC、移动端、小程序、Web 等)
- 21.2. 跨端的核心技术点
- 21.3. JavaScript Bridge(JSBridge)的原理
- 21.4. H5 开发技巧相关
- 21.5. taro 与 uni-app 对比
- 21.6. 小程序的安全合规和性能优化
- 21.7. 微信小程序的双线程设计
- 22. WebGIS
❱
- 22.1. 学习路径
- 22.2. 地图前端渲染
- 22.3. 地图投影和坐标系统
- 22.4. 地图投影的主要类型
- 22.5. 空间数据类型
- 22.6. 地理要素的概念和属性
- 22.7. 空间数据类型
- 22.8. 矢量和栅格的区别?
- 23. 前端系统设计
❱
- 23.1. 在线协作文档设计
- 23.2. UI 标记工具设计
- 23.3. 图标库管理系统设计
- 23.4. 转盘组件设计
- 23.5. SSO 系统与权限系统设计
- 23.6. 产品演示平台&培训平台
- 24. 低代码
❱
- 24.1. 分享:基于低代码平台的三种开发模式
- 24.2. 低代码平台的调试开发
- 24.3. 低代码的研发搭建模式探讨
- 24.4. 调研:Schema 协议设计(amis、schema 设计、事件流、Vdom 等)
- 24.5. 调研:Amis 工作原理、自定义组件
- 24.6. 调研:各类大会对低代码的分享
- 24.7. 调研:低代码渲染设计思路
- 24.8. 调研:编辑器&设计态如何设计?
- 24.9. 调研:低代码引擎技术白皮书
- 24.10. 低代码原理与标准
- 24.11. 好文:低代码实现原理
- 24.12. 好文:阿里低代码引擎和生态建设实战及思考
- 24.13. 调研:各类大会对低代码的分享
- 24.14. 好文:低代码探索之路
- 24.15. 好文:低代码常见问题
- 24.16. 精读:低代码的组件体系的建设和实践
- 24.17. 调研:设计器交互体验
- 24.18. 调研:低代码开发如何协同?
- 24.19. 基于 Vue3 的低代码平台架构设计:篇一
- 24.20. 低代码工程结构设计
- 25. 编程题
❱
- 25.1. 对象转成深度为一的对象
- 25.2. 101 → 一百零一
- 25.3. 合并连续的数字:1,2,3,5,7,8,9 => 1~3,5,7~9
- 25.4. 压缩算法:aabcccccaaa 会变为 a2b1c5a3
- 25.5. 打平数组转成树形结构
- 25.6. 常见编程题
- 26. 前端的思考
❱
- 26.1. 前端的思考:随记
- 26.2. 业务支撑与业务价值
- 26.3. 大模型下背景下的前端研发模式随记
- 26.4. 前端工程师在 AI 时代的机会与挑战
- 26.5. 前端开发与 AI 大模型的集成
- 第三部分 算法
- 27. 前言
- 28. 基础
❱
- 28.1. 算法核心框架
- 28.2. 计算机算法的框架思维
- 28.3. 基础数据结构
- 28.4. 算法复杂度
- 28.5. 刷题注意事项
- 29. 字符串
❱
- 29.1. 字符串的最大公因子
- 30. 数组
❱
- 30.1. 数组:Python 描述
- 30.2. 列表:Python 描述
- 30.3. 数组:JavaScript 描述
- 30.4. 数组链表与内存缓存的关系
- 31. 数组:二分搜索
❱
- 31.1. 搜索旋转排序数组:从两个有序组成的数组中找目标值
- 31.2. 在排序数组中查找元素的第一个和最后一个位置
- 31.3. 搜索插入位置:有序数组中插入 target,保证有序,返回插入的位置
- 31.4. 搜索旋转排序数组 II:从两个排序数组中查找目标值,但存在重复元素
- 31.5. 寻找峰值:峰值元素是指其值严格大于左右相邻值的元素
- 31.6. LCR.统计目标成绩的出现次数
- 31.7. LCR.点名:从一个升序数组中找出缺失的数字
- 31.8. 找到 K 个最接近的元素:最靠近 x 的 k 个数
- 31.9. 二分查找
- 31.10. 山脉数组的峰顶索引:开口向上的抛物线
- 32. 数组:前缀和与前缀积
❱
- 32.1. 最大子数组和
- 32.2. 除自身以外数组的乘积
- 32.3. 路径总和 III
- 32.4. 和为 K 的子数组
- 32.5. 寻找数组的中心下标
- 33. 数组:双指针
❱
- 33.1. 两数之和:无序
- 33.2. 最长回文子串
- 33.3. 盛最多水的容器:找两条线装水最多
- 33.4. 删除有序数组中的重复项
- 33.5. 移除元素:移除指定元素
- 33.6. 接雨水:下雨了柱子间能装多少水
- 33.7. 颜色分类
- 33.8. 删除有序数组中的重复项 II:最多允许重复两次
- 33.9. 合并两个有序数组
- 33.10. 验证回文串
- 33.11. 两数之和 II - 输入有序数组
- 33.12. 移动零
- 33.13. 反转字符串
- 33.14. 有序转化数组:f(x) = a * x * x + b * x + c
- 33.15. 判断子序列
- 33.16. 压缩字符串:b12 => b,1,2 代替
- 33.17. 匹配子序列的单词数: words中是 s 的子序列的单词个数
- 33.18. 有序数组的平方
- 34. 数组:滑动窗口
❱
- 34.1. 无重复字符的最长子串
- 34.2. 最小覆盖子串
- 34.3. 找到字符串中所有字母异位词
- 34.4. 字符串的排列
- 35. 数组:二维数组
❱
- 35.1. 最长公共前缀
- 35.2. 二维数组的遍历技巧
- 35.3. 矩阵置零
- 35.4. 搜索二维矩阵:打平成一维也严格递增
- 35.5. 搜索二维矩阵 II:行递增、列递增
- 35.6. 有序矩阵中第 K 小的元素
- 35.7. 重塑矩阵:mn 转成 rc
- 35.8. 转置矩阵
- 35.9. 二维网格迁移
- 35.10. 将矩阵按对角线排序
- 35.11. 相等行列对
- 36. 数组:其他
❱
- 36.1. 缺失的第一个正数:找第一个缺失的正整数
- 36.2. 合并区间
- 36.3. 反转字符串中的单词
- 36.4. 多数元素
- 36.5. 轮转数组
- 37. 搜索
❱
- 37.1. 搜索算法总结
- 38. 排序
❱
- 38.1. 归并排序
- 38.2. 排序算法基础
- 38.3. 快速排序算法的原理及运用
- 38.4. 排序算法(高级)
- 38.5. 深入理解快速排序
- 38.6. 深入理解归并排序
- 38.7. 煎饼排序
- 39. 链表
❱
- 39.1. 链表:JavaScript 描述
- 39.2. 链表:Python 描述
- 39.3. 删除链表的倒数第 N 个结点
- 39.4. 合并两个有序链表
- 39.5. 合并 K 个升序链表
- 39.6. 反转单链表:反转全部、反转前 N 个节点、反转一部分
- 39.7. 删除排序链表中的重复元素 II:删除所有重复的节点
- 39.8. 删除排序链表中的重复元素:去重
- 39.9. 分隔链表
- 39.10. 判断链表是否有环
- 39.11. 找链表中第一个入环节点
- 39.12. 重排链表:1→n-1→2→n-2→...
- 39.13. 相交链表
- 39.14. 反转链表
- 39.15. 奇偶链表
- 39.16. 链表的中间结点:寻找链表的中间节点
- 39.17. 从未排序的链表中移除重复元素:不是去重
- 39.18. 删除链表的中间节点
- 40. 栈
❱
- 40.1. 栈:Python 描述
- 40.2. 有效的括号:判断括号字符串是否合法的
- 40.3. 简化路径
- 40.4. 用队列实现栈
- 40.5. 字符串解码
- 40.6. 从字符串中移除星号
- 41. 列队
❱
- 41.1. 单调列队算法
- 41.2. 列队:Python 描述
- 41.3. 双向队列:Python 描述
- 41.4. 优先级队列及 TopK 问题
- 41.5. 优先级队列:入队函数最简易实现(sort)
- 41.6. 优先级队列:Leetcode 中提供的数据结构介绍
- 41.7. 使用两个栈实现队列
- 41.8. 滑动窗口最大值
- 41.9. 查找和最小的 K 对数字
- 41.10. 最近的请求次数
- 42. 哈希表
❱
- 42.1. 哈希表概述
- 42.2. 哈希集合
- 42.3. 字母异位词分组:按字母异位词分组
- 43. 树
❱
- 43.1. 树的一些基本概念
- 43.2. 一个方法秒杀 5 道最近公共祖先问题
- 43.3. 二叉树基本概念:Python 描述
- 43.4. 二叉树的存储方式
- 43.5. 二叉树的遍历:Python 描述
- 43.6. 二叉树的遍历: DFS(前中后序遍历)、BFS(层序遍历)
- 43.7. 多叉树的遍历: DFS(前中后序遍历)、BFS(层序遍历)
- 43.8. 二叉树算法概述
- 43.9. 二叉树的两种解题思维
- 43.10. 二叉树的分解问题思路
- 43.11. 二叉树的前中后序遍历详解
- 43.12. 二叉树的遍历思路习题
- 43.13. 二叉树遍历的迭代解法
- 43.14. 多叉树的遍历:Python 描述
- 43.15. 二叉树与单链表的关系
- 43.16. AVL 树和红黑树
- 43.17. 其他树结构
- 44. 二叉树
❱
- 44.1. 二叉树的最大深度
- 44.2. 填充每个节点的下一个右侧节点指针
- 44.3. 二叉树的前序遍历
- 44.4. 二叉树的右视图
- 44.5. 二叉树的直径:左右子树的最大深度之和
- 44.6. 叶子相似的树
- 45. 二叉树的构造与序列化
❱
- 45.1. 二叉树的构造
- 45.2. 从前序与中序遍历序列构造二叉树
- 45.3. 二叉树的序列化与反序列化
- 45.4. 最大二叉树
- 46. 二叉搜索树(BST)
❱
- 46.1. 二叉搜索树:Python 描述
- 46.2. 二叉搜索树的特性
- 46.3. 二叉搜索树的增删改查(BST 的增删改查)
- 46.4. 二叉搜索树(篇三:BST 的构造)
- 46.5. 二叉搜索树(篇四:BST 的后序位置)
- 46.6. 验证二叉搜索树
- 46.7. 二叉搜索树中第 K 小的元素
- 46.8. 删除二叉搜索树中的节点
- 46.9. 二叉搜索树中的搜索
- 46.10. 二叉搜索树中的插入操作
- 46.11. 从二叉搜索树到更大和树:BST 转化累加树
- 47. 二叉树:分解问题的思路
❱
- 47.1. 相同的树:判断两个二叉树是否相同
- 47.2. 对称二叉树:判断树是否轴对称
- 47.3. 二叉树中的最大路径和
- 47.4. 翻转二叉树:翻转二叉树的两种解题思路
- 47.5. 翻转等价二叉树:判断这两棵二叉树是否是翻转等价的
- 48. 二叉树:遍历一遍的思路
❱
- 48.1. 二叉树的最小深度
- 48.2. 求根节点到叶节点数字之和
- 48.3. 二叉树的所有路径:返回二叉树的所有路径,以a→b的方式
- 48.4. 二叉树最长连续序列:所有路径中,求最长连续序列的长度
- 48.5. N 叉树的最大深度
- 48.6. 从叶结点开始的最小字符串
- 48.7. 从根到叶的二进制数之和
- 48.8. 统计二叉树中好节点的数目:
- 49. 二叉树:后序位置
❱
- 49.1. 平衡二叉树
- 50. 二叉树:层次遍历
❱
- 50.1. 二叉树的层序遍历
- 50.2. 二叉树的锯齿形层序遍历:Z 字形遍历
- 50.3. 二叉树的层序遍历 II:自底向上的层序遍历
- 50.4. 填充每个节点的下一个右侧节点指针 II
- 50.5. 在每个树行中找最大值
- 50.6. 二叉树的层平均值
- 50.7. 二叉树最大宽度
- 50.8. 二叉树的完全性检验:判断完全二叉树
- 50.9. 最大层内元素和:返回哪一层和最大
- 50.10. 层数最深叶子节点的和:返回最后一层的和
- 50.11. 奇偶树:第 0 层递增,第 1 层递减
- 51. 堆
❱
- 51.1. 二叉堆
- 51.2. 数据结构中的堆和内存中的堆的区别
- 51.3. 堆内存和栈内存的区别
- 51.4. 二叉堆与优先级队列的关系
- 52. 其他数据结构
❱
- 52.1. 常数时间删除、查找数组中的任意元素
- 52.2. LRU 算法
- 52.3. LFU 缓存
- 53. 图
❱
- 53.1. 基本概念:篇二
- 53.2. 基本概念:篇二
- 53.3. 图的实现
- 53.4. 图的 DFS 遍历
- 53.5. 图的 BFS 遍历
- 53.6. 环检测算法:有向图的环检测
- 53.7. 拓扑排序
- 53.8. 二分图
- 53.9. 并查集(Union Find)
- 53.10. 最小生成树: Kruskal 算法
- 53.11. 最小生成树:Prim 算法
- 53.12. Dijkstra 算法
- 53.13. 课程表:是否可能完成所有课程的学习
- 53.14. 课程表 II:返回你为了学完所有课程所安排的学习顺序
- 53.15. 以图判树:判断图是否可以生成树
- 53.16. 搜寻名人:返回名人的编号,不存在返回 -1
- 53.17. 网络延迟时间
- 53.18. 判断二分图:判断一幅图是否是二分图
- 53.19. 所有可能的路径
- 53.20. 可能的二分法:将互相讨厌的人分成两个组
- 53.21. 最低成本连通所有城市
- 53.22. 概率最大的路径
- 53.23. 连接所有点的最小费用
- 53.24. 最小体力消耗路径
- 54. 回溯算法
❱
- 54.1. 回溯算法解题框架
- 54.2. 排列、组合、子集问题合集
- 54.3. 球盒模型
- 54.4. 回溯算法解数独
- 54.5. 回溯算法解括号生成
- 54.6. 划分为 k 个相等的子集
- 54.7. SKU 排列
- 54.8. 电话号码的字母组合
- 54.9. 组合总和 II :元素可重,不可复选
- 54.10. 全排列:元素不可重复,不可复选
- 54.11. 全排列 II:元素可重复,不可复选
- 54.12. 组合:元素不重复不可复选
- 54.13. 子集:元素不重复不可复选
- 54.14. 子集 II:元素重复,不可复选
- 54.15. 复原 IP 地址
- 54.16. 单词拆分 II:加空格生成多少种句子
- 54.17. 连续差相同的数字
- 55. DFS
❱
- 55.1. 回溯算法与DFS算法的区别
- 55.2. 二维矩阵遍历框架
- 55.3. 岛屿数量
- 55.4. 省份数量
- 55.5. 不同岛屿的数量:形状不同的岛屿
- 55.6. 岛屿的最大面积:半岛也算
- 55.7. 统计封闭岛屿的数目:全岛的数量
- 55.8. 重新规划路线
- 55.9. 统计子岛屿:grid2 被 grid1包含多少个岛屿?
- 56. BFS
❱
- 56.1. BFS 算法框架
- 56.2. 双向 BFS 优化
- 56.3. 打开转盘锁
- 56.4. 滑动谜题
- 56.5. 腐烂的橘子
- 57. 动态规划
❱
- 57.1. 斐波那契数列
- 57.2. 动态规划解题套路框架:以最小零钱为例说明
- 57.3. 如何查找状态转移方程:最长递增子序列与俄罗斯套娃
- 57.4. base case 和备忘录的初始值怎么定:下降路径的最小和
- 57.5. 最优子结构原理 和 DP 数组遍历方向
- 57.6. 动态规划穷举的两种视角:不同的子序列个数
- 57.7. 动态规划和回溯算法:单词拆分与单词拆分 II
- 57.8. 对动态规划进行空间压缩
- 57.9. 子序列:最小编辑距离
- 57.10. 子序列:最大子数组
- 57.11. 子序列:最长公共子序列问题
- 57.12. 子序列: 动态规划之子序列问题解题模板(最长回文子序列)
- 57.13. 背包:0-1 背包问题
- 57.14. 背包:数组是否可以分割两个子集,使得这两子集的元素和相等
- 57.15. 完全背包问题:零钱兑换
- 57.16. 背包问题:目标和
- 57.17. 地下城游戏
- 57.18. 最小路径和
- 57.19. 不同的子序列: s 的子序列中 t 出现的个数
- 57.20. 单词拆分:给定的字符串是否能由给定的单词集合组合成
- 57.21. 最长递增子序列:最长递增子序列数量
- 57.22. 零钱兑换:需要的最小硬币数
- 57.23. 俄罗斯套娃信封问题:最长子序列的二维版本
- 57.24. 下降路径最小和:从第一行下降到最后一行最小路径合为多少?
- 58. 贪心算法
❱
- 58.1. 贪心算法:区间调度问题
- 58.2. 跳跃游戏 II
- 58.3. 跳跃游戏
- 59. 数学运算
❱
- 59.1. 反直觉的概率问题
- 59.2. 丑数 II
- 60. 其他算法
❱
- 60.1. 区间问题
- 60.2. 阶乘算法题
- 60.3. 一行代码就能解决的算法题
- 60.4. 完美矩阵
- 60.5. 分割数组为连续子序列:斗地主的顺子
- 60.6. 为运算表达式设计优先级
- 60.7. 丑数问题
- 60.8. 常见的随机算法
- 60.9. 如何同时寻找缺失和重复的元素
- 60.10. 判断一个数是否是素数
- 60.11. 位运算技巧
- 60.12. 其他技巧总结
- 61. LeetCode 刷题篇
❱
- 61.1. 买卖股票的最佳时机
- 61.2. 买卖股票的最佳时机 II
- 61.3. 最长连续序列
- 61.4. 买卖股票的最佳时机 IV
- 61.5. H 指数
- 61.6. 移动零
- 61.7. 递增的三元子序列
- 61.8. 反转字符串中的元音字母
- 61.9. 除法求值
- 61.10. 种花问题
- 61.11. 子数组最大平均数 I
- 61.12. Dota2 参议院
- 61.13. 小行星碰撞
- 61.14. 钥匙和房间
- 61.15. 最大连续 1 的个数 III
- 61.16. 独一无二的出现次数
- 61.17. 二叉树中的最长交错路径
- 61.18. 拥有最多糖果的孩子
- 61.19. 定长子串中元音的最大数目
- 61.20. 删掉一个元素以后全为 1 的最长子数组
- 61.21. 确定两个字符串是否接近
- 61.22. K 和数对的最大数目
- 61.23. 找到最高海拔
- 61.24. 交替合并字符串
- 61.25. 迷宫中离入口最近的出口
- 61.26. 链表最大孪生和
- 61.27. 找出两数组的不同
- 第四部分 计算机科学
- 62. 前言
- 63. Python 编程语言
❱
- 63.1. Python 语言基础
- 63.2. Python 函数与模块
- 63.3. Python 类
- 63.4. Python 文件与异常处理
- 64. 计算机网络篇
❱
- 64.1. 关于HTTP 的一些常见问题汇总
- 64.2. 常见的几种 POST 数据提交方式
- 64.3. 幂等与非幂等、HTTP 常见状态码
- 65. 数据库
❱
- 65.1. 数据库事务(Transaction)的概念和重要性
- 66. 其他
❱
- 66.1. 最常见的开源协议
- 第五部分 产品
- 67. 前言
- 68. XaaS
- 关于