Skip to content

jinrunheng/datastructure-and-algorithm

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Data Structure and Algorithm

This is a Data Structure and Algorithm learning repo implements by Java/Python

数据结构基础

Data Structure Code Document
数组 Array.java 1.动态数组
ArrayStack.java 2.栈
LinkedListStack.java 4.链表
队列 ArrayQueue.java 3.队列
队列 LoopQueue.java 3.队列
队列 LinkedListQueue.java 4.链表
链表 LinkedList.java 4.链表
二分搜索树 BST.java 5.二分搜索树
集合 LinkedListSet.java 6.集合与映射
集合 BSTSet.java 6.集合与映射
映射 LinkedListMap.java 6.集合与映射
映射 BSTMap.java 6.集合与映射
MaxHeap.java 7.优先队列与堆
优先队列 PriorityQueue.java 7.优先队列与堆
跳表 SkipList.java 8.跳表
线段树 SegmentTree.java 9.线段树
线段树 SegmentTree2.java 9.线段树
哈夫曼树 HuffmanTree.java 10.哈夫曼树
[拓展]使用哈夫曼编码实现文件压缩与解压 Demo 10.哈夫曼树
前缀树 Trie.java 11.前缀树
并查集 [缺] [缺]
AVL AVLTree.java 13. AVL 树
红黑树 RBTree.java 14. 红黑树

左程云算法 Python 版(更新ing)

Chapter Code Document
003-二进制和位运算 Code 003-二进制和位运算
004-选择、冒泡、插入排序 Code 004-选择、冒泡、插入排序
009-单双链表及其反转 Code 009-单双链表及其反转
010-合并两个有序链表 Code 010-合并两个有序链表
011-两个链表相加 Code 011-两个链表相加
012-划分链表 Code 012-划分链表
013-队列和栈 Code 013-队列和栈
014-栈和队列相互实现 Code 014-栈和队列相互实现
015-最小栈 Code 015-最小栈
016-双端队列的实现 Code 016-双端队列的实现

算法基础

Chapter Code Document
算法复杂度 [无代码] 1.算法复杂度
线性查找法 LinearSearch.java 2.线性查找法
排序算法——选择排序 SelectionSort.java 排序算法
排序算法——冒泡排序 BubbleSort.java 排序算法
排序算法——插入排序 InsertionSort.java 排序算法
排序算法——归并排序 MergeSort.java 排序算法
排序算法——快速排序 QuickSort.java 排序算法
排序算法——堆排序 HeapSort.java 排序算法
快速幂 [无代码] 快速幂

图论算法

Chapter Code Document
图的基本表示 邻接矩阵 1.图的基本表示
图的基本表示 邻接表(LinkedList) 1.图的基本表示
图的基本表示 邻接表(TreeSet) 1.图的基本表示
图的深度优先遍历 递归方式实现 2.图的深度优先遍历
图的深度优先遍历 非递归方式实现 2.图的深度优先遍历
使用 DFS 求解联通分量 CC.java 3.图的深度优先遍历的应用
使用 DFS 求解单源路径问题 SingleSourcePath.java 3.图的深度优先遍历的应用
使用 DFS 求解所有点对路径问题 AllPairsPath.java 3.图的深度优先遍历的应用
使用 DFS 求解任意两点路径问题 Path.java 3.图的深度优先遍历的应用
使用 DFS 求解无向图环检测问题 CycleDetection.java 3.图的深度优先遍历的应用
使用 DFS 求解图是否是一棵树 GraphIsTree.java 3.图的深度优先遍历的应用
使用 DFS 解决二分图检测 BipartitionDetection.java 3.图的深度优先遍历的应用
图的广度优先遍历 GraphBFS.java 4.图的广度优先遍历
使用 BFS 求解单源路径问题 SingleSourcePath.java 4.图的广度优先遍历
使用 BFS 求解所有点对路径问题 AllPairsPath.java 4.图的广度优先遍历
使用 BFS 求解任意两点路径问题 Path.java 4.图的广度优先遍历
使用 BFS 求解联通分量 CC.java 4.图的广度优先遍历
使用 BFS 求解无向图环检测问题 CycleDetection.java 4.图的广度优先遍历
使用 BFS 解决二分图检测 BipartitionDetection.java 4.图的广度优先遍历
无权图的最短路径——单源路径 UnweightedSingleSourceShortestPath.java 4.图的广度优先遍历
无权图的最短路径——任意两点路径 UnweightedShortestPath.java 4.图的广度优先遍历
图论问题建模和 FloodFill 算法 [无代码] 5.图论问题建模和 FloodFill 算法
图论搜索和人工智能 [无代码] 6.图论搜索和人工智能
Water Puzzle WaterPuzzle.java 6.图论搜索和人工智能
River Crossing Puzzle RiverCrossingPuzzle.java 6.图论搜索和人工智能
桥,割点以及图的遍历树木 [无代码] 7.桥,割点以及图的遍历树
寻找桥的算法 FindBridges.java 7.桥,割点以及图的遍历树
寻找割点的算法 FindCutPoints.java 7.桥,割点以及图的遍历树
哈密尔顿问题和状态压缩 [无代码] 8.哈密尔顿问题和状态压缩
哈密尔顿回路算法 HamiltonLoop.java 8.哈密尔顿问题和状态压缩
哈密尔顿路径算法 HamiltonPath.java 8.哈密尔顿问题和状态压缩
哈密尔顿回路算法+状态压缩 HamiltonLoop_SR.java 8.哈密尔顿问题和状态压缩
哈密尔顿路径算法+状态压缩 HamiltonPath_SR.java 8.哈密尔顿问题和状态压缩
记忆化搜索 [无代码] 8.哈密尔顿问题和状态压缩
无向带权图的实现 WeightedGraph.java 10.Kruskal 算法与 Prim 算法
Kruskal 算法 Kruskal.java 10.Kruskal 算法与 Prim 算法
Prim 算法 Prim.java 10.Kruskal 算法与 Prim 算法
Dijkstra 算法 Dijkstra.java 最短路径算法
Dijkstra 算法 Dijkstra_2.java 最短路径算法
Dijkstra 算法 Dijkstra_3.java 最短路径算法
BellmanFord 算法 BellmanFord.java 最短路径算法
BellmanFord 算法 BellmanFord_2.java 最短路径算法
Floyed 算法 Floyed.java 最短路径算法

LeetCode 类型题整理

Tag Problem Difficulty Official Solution My Solution
计数 1010. 总持续时间可被 60 整除的歌曲 Medium 官方题解 code(暂无题解)
二分查找 704. 二分查找 Easy 官方题解 code(递归写法)
二分查找 704. 二分查找 Easy 官方题解 code(非递归写法)
二分查找 875. 爱吃香蕉的珂珂 Medium 官方题解 我的题解...待完成
二分查找 2389. 和有限的最长子序列 Easy 官方题解 code
快速幂 50. Pow(x, n) Medium 官方题解 我的题解
快速幂 372. 超级次方 Medium 官方题解 我的题解
快速幂 6338. 猴子碰撞的方法数 Medium [暂无官方题解] 我的题解
双指针 15. 三数之和 Medium 官方题解 我的题解
20. 有效的括号 Easy 官方题解 我的题解
155. 最小栈 Easy 官方题解 我的题解
225. 用队列实现栈 Easy 官方题解 我的题解
232. 用栈实现队列 Easy 官方题解 我的题解
739. 每日温度 Medium 官方题解 我的题解
394. 字符串解码 Medium 官方题解 我的题解...待完成
962. 最大宽度坡 Medium 官方题解 我的题解
42. 接雨水 Hard 官方题解 code(暂无题解)
链表 剑指 Offer 06. 从尾到头打印链表 Easy 官方题解 我的题解
链表 剑指 Offer 18. 删除链表的节点 Easy 官方题解 我的题解
链表 剑指 Offer 22. 链表中倒数第k个节点 Easy 官方题解 我的题解
链表 剑指 Offer 24. 反转链表 Easy 官方题解 我的题解
链表 剑指 Offer 25. 合并两个排序的链表 Easy 官方题解 我的题解
链表 剑指 Offer 52. 两个链表的第一个公共节点 Easy 官方题解 我的题解
链表 2. 两数相加 Medium 官方题解 我的题解
二叉树 144. 二叉树的前序遍历 Easy 官方题解 code(递归写法)
二叉树 144. 二叉树的前序遍历 Easy 官方题解 code(非递归写法)
二叉树 94. 二叉树的中序遍历 Easy 官方题解 code(递归写法)
二叉树 94. 二叉树的中序遍历 Easy 官方题解 code(非递归写法)
二叉树 145. 二叉树的后序遍历 Easy 官方题解 code(递归写法)
二叉树 145. 二叉树的后序遍历 Easy 官方题解 code(非递归写法)
二叉树 102. 二叉树的层序遍历 Medium 官方题解 code(暂无题解)
二叉树 103. 二叉树的锯齿形层序遍历 Medium 官方题解 我的题解
二叉树 700. 二叉搜索树中的搜索 Easy 官方题解 code(暂无题解)
1797. 设计一个验证系统 Medium 官方题解 code(暂无题解)
哈希表 1. 两数之和 Easy 官方题解 我的题解
哈希表 13. 罗马数字转整数 Easy 官方题解 code(暂无题解)
前缀和 1653. 使字符串平衡的最少删除次数 Medium 官方题解 code(暂无题解)
前缀和 1352. 最后 K 个数的乘积 Medium 官方题解 code
动态规划 1664. 生成平衡数组的方案数 Medium 官方题解 code(暂无题解)
动态规划 1140. 石子游戏 II Medium 官方题解 code(暂无题解)
动态规划 1105. 填充书架 Medium 官方题解 code(暂无题解)
动态规划 1048. 最长字符串链 Medium 官方题解 code(暂无题解)
贪心算法 56. 合并区间 Medium 官方题解 code(暂无题解)
贪心算法 1798. 你能构造出连续值的最大数目 Medium 官方题解 code(暂无题解)
回溯算法 17. 电话号码的字母组合 Medium 官方题解 我的题解
回溯算法 46. 全排列 Medium 官方题解 我的题解
滑动窗口 3. 无重复字符的最长子串 Medium 官方题解 我的题解
图论 785. 判断二分图 Medium 官方题解 我的题解
图论 695. 岛屿的最大面积 Medium 官方题解 我的题解
图论 200. 岛屿数量 Medium 官方题解 我的题解
图论 1091. 二进制矩阵中的最短路径 Medium [暂无官方题解] 我的题解
图论 752. 打开转盘锁 Medium 官方题解 我的题解
图论 365. 水壶问题 Medium 官方题解 我的题解
图论 773. 滑动谜题 Hard 官方题解 我的题解
图论 733. 图像渲染 Easy 官方题解 我的题解
图论 980. 不同路径 III Hard 官方题解 code(暂无题解)
数学 1250. 检查「好数组」 Hard 官方题解 code(暂无题解)

About

This is a Data Structure and Algorithm learning repository

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages