ALGORITHM-TUTORIAL ALGORITHM-TUTORIAL
GitHub (opens new window)
GitHub (opens new window)

ALGORITHM-TUTORIAL

💾 algorithm-tutorial 是一个数据结构与算法教程。

star fork build code style

ALGORITHM-TUTORIAL

💾 algorithm-tutorial 是一个数据结构与算法教程。

掌握数据结构与算法,你看待问题的深度,解决问题的角度就会完全不一样。

  • 🔁 项目同步维护:Github (opens new window) | Gitee (opens new window)
  • 📖 电子书阅读:Github Pages (opens new window) | Gitee Pages (opens new window)

# 📖 内容

img

  • 综合
  • 数据结构和算法指南
  • 复杂度分析 - 关键词:时间复杂度、空间复杂度、大 O 表示法、复杂度量级
  • 线性表
    • 数组和链表 - 关键词:线性表、一维数组、多维数组、随机访问、单链表、双链表、循环链表
    • 栈和队列 - 关键词:先进后出、后进先出、循环队列
    • 线性表的查找
    • 线性表的排序
  • 树
    • 树和二叉树
    • 堆
    • B+树
    • LSM 树
    • 字典树
    • 红黑树
  • 哈希表 - 关键词:哈希函数、装载因子、哈希冲突、开放寻址法、拉链法
  • 跳表 - 关键词:多级索引
  • 图

# 💻 刷题

# 数组

  • 三数之和 (opens new window)
  • 两数之和 (opens new window)
  • 二维数组 (opens new window)
  • 删除排序数组中的重复项 (opens new window)
  • 加一 (opens new window)
  • 在排序数组中查找元素的第一个和最后一个位置 (opens new window)
  • 在排序数组中查找数字 I (opens new window)
  • 存在重复元素 (opens new window)
  • 对角线遍历 (opens new window)
  • 寻找数组的中心索引 (opens new window)
  • 将数组分成和相等的三个部分 (opens new window)
  • 数组二分查找 (opens new window)
  • 数组拆分 1 (opens new window)
  • 旋转数组 (opens new window)
  • 旋转矩阵 (opens new window)
  • 最大连续 1 的个数 (opens new window)
  • 杨辉三角 (opens new window)
  • 杨辉三角 2 (opens new window)
  • 模拟 ArrayList1 (opens new window)
  • 模拟 ArrayList2 (opens new window)
  • 移动零 (opens new window)
  • 移除元素 (opens new window)
  • 至少是其他数字两倍的最大数 (opens new window)
  • 螺旋矩阵 (opens new window)
  • 长度最小的子数组 (opens new window)
  • 零矩阵 (opens new window)

# 链表

  • 两数相加 (opens new window)
  • 二进制链表转整数 (opens new window)
  • 删除排序链表中的重复元素 (opens new window)
  • 单链表示例 (opens new window)
  • 双链表示例 (opens new window)
  • 反转链表 (opens new window)
  • 合并 K 个排序链表 (opens new window)
  • 合并 K 个排序链表解法 2 (opens new window)
  • 合并两个有序链表 (opens new window)
  • 回文链表 (opens new window)
  • 排序链表 (opens new window)
  • 环形链表 (opens new window)
  • 相交链表 (opens new window)
  • 移除重复节点 (opens new window)
  • 移除链表元素 (opens new window)
  • 返回倒数第 k 个节点 (opens new window)
  • 链表的中间结点 (opens new window)

# 栈

  • 三合一 (opens new window)
  • 基本计算器 (opens new window)
  • 最小栈 (opens new window)
  • 最小栈 2 (opens new window)
  • 有效的括号 (opens new window)
  • 栈排序 (opens new window)
  • 棒球比赛 (opens new window)
  • 比较含退格的字符串 (opens new window)
  • 用栈实现队列 (opens new window)
  • 用队列实现栈 (opens new window)

# 队列

  • 动态扩容数组实现的队列 (opens new window)
  • 数组实现的队列 (opens new window)
  • 最近的请求次数 (opens new window)
  • 设计循环队列 (opens new window)
  • 链表实现的队列 (opens new window)

# 字符串

  • 二进制求和 (opens new window)
  • 实现 strStr() (opens new window)
  • 最长公共前缀 (opens new window)
  • 反转字符串 (opens new window)
  • 反转字符串中的单词 (opens new window)
  • 反转字符串中的单词 III (opens new window)

# 树

  • N 叉树的最大深度 (opens new window)

# 二叉树

  • 二叉树中的最大路径和 (opens new window)
  • 二叉树的中序遍历 (opens new window)
  • 二叉树的前序遍历 (opens new window)
  • 二叉树的后序遍历 (opens new window)
  • 二叉树的层次遍历 (opens new window)
  • 二叉树的层次遍历 2 (opens new window)
  • 二叉树的序列化与反序列化 (opens new window)
  • 二叉树的所有路径 (opens new window)
  • 二叉树的最大深度 (opens new window)
  • 二叉树的最小深度 (opens new window)
  • 二叉树的最近公共祖先 (opens new window)
  • 二叉树的锯齿形层次遍历 (opens new window)
  • 从先序遍历还原二叉树 (opens new window)
  • 叶子相似的树 (opens new window)
  • 填充每个节点的下一个右侧节点指针 (opens new window)
  • 填充每个节点的下一个右侧节点指针 II (opens new window)
  • 对称二叉树 (opens new window)
  • 平衡二叉树 (opens new window)
  • 相同的树 (opens new window)
  • 翻转二叉树 (opens new window)
  • 路径总和 (opens new window)

# 二叉搜索树

  • 二叉搜索树中的插入操作 (opens new window)
  • 二叉搜索树的最近公共祖先 (opens new window)
  • 二叉搜索树节点最小距离 (opens new window)
  • 将有序数组转换为二叉搜索树 (opens new window)
  • 验证二叉搜索树 (opens new window)

# 📚 资料

  • 书籍
    • 刷题必备
      • 《剑指 offer》
      • 《编程之美》
      • 《编程之法:面试和算法心得》
      • 《算法谜题》 都是思维题
    • 基础
      • 《编程珠玑(第 2 版) (opens new window)》
      • 《编程珠玑(续) (opens new window)》
      • 《数据结构与算法分析 : C++描述(第 4 版) (opens new window)》
      • 《数据结构与算法分析 : C 语言描述(第 2 版) (opens new window)》
      • 《数据结构与算法分析 : Java 语言描述(第 2 版) (opens new window)》
      • 《算法(第 4 版) (opens new window)》
    • 算法设计
      • 《算法设计与分析基础(第 3 版) (opens new window)》
      • 《Algorithm Design Manual》 - 算法设计手册 红皮书
      • 《算法导论》 (opens new window) - 是一本对算法介绍比较全面的经典书籍
      • 《Algorithms on Strings,Trees and Sequences》
      • 《Advanced Data Structures》 - 各种诡异高级的数据结构和算法 如元胞自动机、斐波纳契堆、线段树 600 块
  • 学习网站
    • https://github.com/TheAlgorithms/Java
    • https://github.com/nonstriater/Learn-Algorithms
    • https://github.com/trekhleb/javascript-algorithms
    • https://github.com/wangzheng0822/algo
    • https://github.com/kdn251/interviews/blob/master/README-zh-cn.md#%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84
    • July 博客 (opens new window)
      • 《数学建模十大经典算法》
      • 《数据挖掘领域十大经典算法》
      • 《十道海量数据处理面试题》
      • 《数字图像处理领域的二十四个经典算法》
      • 《精选微软等公司经典的算法面试 100 题》
    • The-Art-Of-Programming-By-July (opens new window)
    • 微软面试 100 题 (opens new window)
    • 程序员编程艺术 (opens new window)
  • 基本算法演示
    • http://sjjg.js.zwu.edu.cn/SFXX/sf1/sfys.html (opens new window)
    • http://www.cs.usfca.edu/\~galles/visualization/Algorithms.html (opens new window)
  • 编程网站
    • leetcode (opens new window)
    • openjudge (opens new window)
  • 教程
    • 高级数据结构和算法 (opens new window) 北大教授张铭老师在 coursera 上的课程。完成这门课之时,你将掌握多维数组、广义表、Trie 树、AVL 树、伸展树等高级数据结构,并结合内排序、外排序、检索、索引有关的算法,高效地解决现实生活中一些比较复杂的应用问题。当然 coursera 上也还有很多其它算法方面的视频课程。
    • 算法设计与分析 Design and Analysis of Algorithms (opens new window) 由北大教授 Wanling Qu 在 coursera 讲授的一门算法课程。首先介绍一些与算法有关的基础知识,然后阐述经典的算法设计思想和分析技术,主要涉及的算法设计技术是:分治策略、动态规划、贪心法、回溯与分支限界等。每个视频都配有相应的讲义(pdf 文件)以便阅读和复习。
    • 算法面试通关 40 讲 (opens new window)
    • 数据结构与算法之美 (opens new window)

# 🚪 传送

| 技术文档归档 (opens new window) | 算法和数据结构教程系列 (opens new window) |

文章分类
数据结构和算法 15 综合 2 树 6 线性表 3
热门标签
数据结构 算法 树 LSM 树 二叉树 B+ 树 字典树 数据结构和算法 跳表 红黑树 线性表 数组 链表 图 哈希表 查找 堆 排序 完全二叉树 栈 队列
Theme by Vdoing | Copyright © 2019-2025 钝悟(dunwu) | CC-BY-SA-4.0
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
×