# 常见数据结构与算法小结(Java语言描述)
这是一个数据结构和算法笔记本,**书写** 并 **整理**一些常见的数据结构和其对应的相关操作。这其中**每一个类文件都是一个可以单独运行查看结果的main方法类**
,相关的关键描述和想说的话都在代码的注释中。(欢迎一同补充和完善,2019年01月04日00:07:40置为public)
1. 数组
- [搜索二维矩阵](/src/main/java/ds/FindInDoubleArray.java)
- [数组中重复的数据](/src/main/java/ds/RepeatInArray.java)
- [合并两个有序数组](/src/main/java/ds/MergeArray.java)
- [旋转数组](/src/main/java/ds/RotateArray.java)
- [有序数组的平方](/src/main/java/ds/SortedSquares.java)
- [寻找数组的中心索引](/src/main/java/ds/PivotIndex.java)
- [两个数组的交集II](/src/main/java/ds/Intersect.java)
- [递增的三元子序列](/src/main/java/ds/IncreasingTriplet.java)
- [除自身以外数组的乘积](/src/main/java/ds/ProductExceptSelf.java)
- [存在重复元素II](/src/main/java/ds/ContainsNearbyDuplicate.java)
- [存在重复元素III](/src/main/java/ds/ContainsNearbyAlmostDuplicate.java)
- [矩阵置零](/src/main/java/ds/SetZeroes.java)
- [1486.数组异或操作](/src/main/java/ds/array/leetcode1486/Solution.java)
4. 线性数据结构及其对应的常见算法
1. 线性表(分别基于数组和链表实现一遍)
- [线性表的增加(基于顺序存储的物理结构实现)](/src/main/java/ds/ListInsert.java)
- [线性表的删除(基于顺序存储的物理结构实现)](/src/main/java/ds/ListDelete.java)
- [线性表的插入(基于链式存储的物理结构实现)](/src/main/java/ds/LinkInsert.java)
- [线性表的删除(基于链式存储的物理结构实现)](/src/main/java/ds/LinkDelete.java)
- [线性表的创建(基于链式存储的物理结构)头插法和尾插法](/src/main/java/ds/LinkCreate.java)
- [查找线性表中的某一个元素(基于链式存储的物理结构实现)](/src/main/java/ds/LinkGet.java)
2. 栈
- [顺序栈(基于数组实现的栈)](/src/main/java/ds/ArrayStack.java)
- [链式栈(基于链表实现的栈)](/src/main/java/ds/LinkStack.java)
3. 队列
- [顺序队列(基于数组实现的队列)](/src/main/java/ds/ArrayQueue.java)
- [链式队列(基于链表实现的队列)](/src/main/java/ds/LinkQueue.java)
- [循环队列(基于数组成环)](/src/main/java/ds/CircleQueue.java)
5. 递归
- [n的阶乘](/src/main/java/ds/Factorial.java)
- [斐波拉切数列](/src/main/java/ds/FibonacciArray.java)
- [位于第几排问题(递归、非递归分别实现)](/src/main/java/ds/LocationRow.java)
- [n个台阶走法问题(每次可以走1个台阶或者2个台阶)](/src/main/java/ds/OneTwoStep.java)
- [输出指定路径下的所有文件名(递归、非递归分别实现)](/src/main/java/ds/FileSearch.java)
6. 分治
- [x的n次方](/src/main/java/ds/Pow.java)
11. 堆
- [TopK](/src/main/java/ds/KthLargest.java)
- [数组中的第K个最大元素](/src/main/java/ds/FindKthLargest.java)
- [前K个高频元素](/src/main/java/ds/TopKFrequent.java)
- [前K个高频单词](/src/main/java/ds/TopKWord.java)
13. 求数
- [求众数](/src/main/java/ds/MajorityElement.java)
- [加一](/src/main/java/ds/PlusOne.java)
- [Nim游戏](/src/main/java/ds/CanWinNim.java)
- [回文数](/src/main/java/ds/Palindrome.java)
- [猜数字游戏](/src/main/java/ds/GetHint.java)
14. 搜索
- [广度优先搜索](/src/main/java/ds/LevelPrint.java)
- [深度优先搜索](/src/main/java/ds/DepthPrint.java)
15. 图
- [图的表示](/src/main/java/ds/Graph.java)
## LeetCode
1. 反转
- [反转一个数组](/src/main/java/ds/reverse/ReverseArray.java)
- [206.反转链表](/src/main/java/ds/reverse/leetcode206/Solution.java)
- [226.翻转二叉树](/src/main/java/ds/reverse/leetcode226/Solution.java)
- [344.反转字符串](/src/main/java/ds/reverse/leetcode344/Solution.java)
- [541.反转字符串II](/src/main/java/ds/reverse/leetcode541/Solution.java)
- [557.反转字符串中的单词III](/src/main/java/ds/reverse/leetcode557/Solution.java)
- [867.转置矩阵](/src/main/java/ds/reverse/leetcode867/Solution.java)
- [反转单链表的一部分区间](/src/main/java/ds/reverse/ReverseLinkN.java)
2. 二叉树
- [144.二叉树的前序遍历](/src/main/java/ds/tree/leetcode144/Solution.java)
- [二叉树的下一个节点](/src/main/java/ds/tree/NextNodeInTree.java)
- [100.相同的树](/src/main/java/ds/tree/leetcode100/Solution.java)
- [101.对称二叉树](/src/main/java/ds/tree/leetcode101/Solution.java)
- [116.填充每个节点的下一个右侧节点指针](/src/main/java/ds/tree/leetcode116/Solution.java)
- [114.将二叉树展开为链表](/src/main/java/ds/tree/leetcode114/Solution.java)
- [654.最大二叉树](/src/main/java/ds/tree/leetcode654/Solution.java)
- [105.从前序与中序遍历序列构造二叉树](/src/main/java/ds/tree/leetcode105/Solution.java)
- [106.从中序与后序遍历序列构造二叉树](/src/main/java/ds/tree/leetcode106/Solution.java)
- [寻找重复的子树](/src/main/java/ds/tree/FindDuplicateSubtrees.java)
- [297. 二叉树的序列化和反序列化(前序遍历的序列化方式实现)](/src/main/java/ds/tree/leetcode297/preorder/Solution.java)
- [297. 二叉树的序列化和反序列化(后序遍历的序列化方式实现)](/src/main/java/ds/tree/leetcode297/postorder/Solution.java)
- [110.平衡二叉树](/src/main/java/ds/tree/leetcode110/Solution.java)
- [剑指offer 55.二叉树的深度](/src/main/java/ds/tree/targetoffer55/Solution.java)
- [104.二叉树的最大深度](/src/main/java/ds/tree/leetcode104/Solution.java)
- [559.N叉树的最大深度](/src/main/java/ds/tree/leetcode559/Solution.java)
- [111.二叉树的最小深度](/src/main/java/ds/tree/leetcode111/Solution.java)
- [二叉树的节点个数](/src/main/java/ds/tree/leetcode222/TreeNodeCount.java)
- [222.完全二叉树的节点个数](/src/main/java/ds/tree/leetcode222/Solution.java)
- [572.另一个树的子树](/src/main/java/ds/tree/leetcode572/Solution.java)
- [404.左叶子之和](/src/main/java/ds/tree/leetcode404/Solution.java)
- [617.合并二叉树](/src/main/java/ds/tree/leetcode617/Solution.java)
- [236.二叉树的最近公共祖先](/src/main/java/ds/tree/leetcode236/Solution.java)
- [814.二叉树剪枝](/src/main/java/ds/tree/leetcode814/Solution.java)
- [965.单值二叉树](/src/main/java/ds/tree/leetcode965/Solution.java)
3. 二叉查找树
- [700.二叉搜索树中的搜索](/src/main/java/ds/bst/leetcode700/Solution.java)
- [98.验证二叉搜索树](/src/main/java/ds/bst/leetcode98/Solution.java)
- [530.二叉搜索树的最小绝对差](/src/main/java/ds/bst/leetcode530/Solution.java)
- [783.二叉搜索树节点最小距离](/src/main/java/ds/bst/leetcode783/Solution.java)
- [501.二叉搜索树中的众数](/src/main/java/ds/bst/leetcode501/Solution.java)
- [230.二叉搜索树中第K小的元素](/src/main/java/ds/bst/leetcode230/Solution.java)
- [538.把二叉搜索树转换为累加树](/src/main/java/ds/bst/leetcode538/Solution.java)
- [701.二叉搜索树中的插入操作](/src/main/java/ds/bst/leetcode701/Solution.java)
- [450.删除二叉搜索树中的节点](/src/main/java/ds/bst/leetcode450/Solution.java)
- [二叉查找树的插入、遍历、查找、删除、反转](/src/main/java/ds/bst/base/BinarySearchTree.java)
- [235.二叉查找树的最近公共祖先](/src/main/java/ds/bst/leetcode235/Solution.java)
- [剑指offer 36. 二叉搜索树与双向链表](/sr
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
算法与数据结构涵盖了以下主要内容: 数据结构(Data Structures): 逻辑结构:描述数据元素之间的逻辑关系,如线性结构(如数组、链表)、树形结构(如二叉树、堆、B树)、图结构(有向图、无向图等)以及集合和队列等抽象数据类型。 存储结构(物理结构):描述数据在计算机中如何具体存储。例如,数组的连续存储,链表的动态分配节点,树和图的邻接矩阵或邻接表表示等。 基本操作:针对每种数据结构,定义了一系列基本的操作,包括但不限于插入、删除、查找、更新、遍历等,并分析这些操作的时间复杂度和空间复杂度。 算法: 算法设计:研究如何将解决问题的步骤形式化为一系列指令,使得计算机可以执行以求解问题。 算法特性:包括输入、输出、有穷性、确定性和可行性。即一个有效的算法必须能在有限步骤内结束,并且对于给定的输入产生唯一的确定输出。 算法分类:排序算法(如冒泡排序、快速排序、归并排序),查找算法(如顺序查找、二分查找、哈希查找),图论算法(如Dijkstra最短路径算法、Floyd-Warshall算法、Prim最小生成树算法),动态规划,贪心算法,回溯法,分支限界法等。 算法分析:通过数学方法分析算法的时间复杂度(运行时间随数据规模增长的速度)和空间复杂度(所需内存大小)来评估其效率。 学习算法与数据结构不仅有助于理解程序的内部工作原理,更能帮助开发人员编写出高效、稳定和易于维护的软件系统。
资源推荐
资源详情
资源评论
收起资源包目录
常见数据结构及算法(Java语言描述).zip (400个子文件)
MapArraySerialize.class 5KB
Main.class 3KB
Main.class 3KB
CircleQueue.class 3KB
FileSearch.class 3KB
LinkCreate.class 3KB
ArrayQueue.class 2KB
OneTwoStep.class 2KB
BinarySearch.class 2KB
LinkQueue.class 2KB
FindTargetBST.class 2KB
MinimumTotal.class 2KB
DepthPrint.class 2KB
Fipolach.class 2KB
LevelPrint.class 2KB
Intersect.class 2KB
FindInDoubleArray.class 2KB
LinkDelete.class 2KB
LocationRow.class 2KB
ListDelete.class 2KB
LinkInsert.class 2KB
LinkGet.class 2KB
LinkStack.class 2KB
Main.class 2KB
BSFirstEquals.class 2KB
BSEndEquals.class 2KB
QuickUnionUF.class 2KB
BSFirstMore.class 2KB
BSEndLess.class 2KB
ArrayStack.class 2KB
Pow.class 2KB
ContainsDuplicate.class 2KB
ListInsert.class 2KB
Main.class 2KB
RepeatInArray.class 2KB
Union.class 2KB
PivotIndex.class 2KB
Main.class 1KB
GetHint.class 1KB
MaxProduct.class 1KB
SetZeroes.class 1KB
Main.class 1KB
FibonacciArray.class 1KB
MajorityElement.class 1KB
Main.class 1KB
RotateArray.class 1KB
ContainsNearbyAlmostDuplicate.class 1KB
Palindrome.class 1KB
ValidAnagram.class 1KB
Main.class 1KB
Main.class 1KB
Main.class 1KB
Main$Student.class 1KB
ProductExceptSelf.class 1KB
ArrayAverages.class 1KB
ContainsNearbyDuplicate.class 1KB
PlusOne.class 1KB
FindContentChildren.class 1KB
SortedSquares.class 991B
IncreasingTriplet.class 982B
Factorial.class 946B
Main.class 910B
LinkInsert$LinkTable.class 894B
LinkDelete$LinkTable.class 894B
LinkGet$LinkTable.class 876B
Graph.class 807B
PowerOfTwo.class 781B
CanWinNim.class 722B
ListInsert$LineTable.class 614B
ListDelete$LinkTable.class 614B
MergeArray.class 611B
LinkCreate$LinkTable.class 563B
FindTargetBST$TreeNode.class 526B
DepthPrint$TreeNode.class 470B
LinkCreate$Node.class 381B
LinkInsert$Node.class 381B
LinkDelete$Node.class 381B
LinkStack$Node.class 377B
LinkQueue$Node.class 377B
LinkGet$Node.class 369B
.gitignore 149B
BinarySearchTree.java 9KB
MapArraySerialize.java 6KB
MyLinkedList.java 6KB
Solution.java 5KB
BigHeapSort.java 4KB
ReverseLinkN.java 4KB
Solution.java 4KB
Solution.java 4KB
Main.java 4KB
LinkCreate.java 4KB
BinarySearch.java 4KB
MostCommonWord.java 3KB
FizzBuzz.java 3KB
Solution.java 3KB
Solution.java 3KB
Solution.java 3KB
Solution.java 3KB
TopKWord.java 3KB
QuickSort.java 3KB
共 400 条
- 1
- 2
- 3
- 4
资源评论
极致人生-010
- 粉丝: 4379
- 资源: 3087
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- (源码)基于ArcEngine的GIS数据处理系统.zip
- (源码)基于JavaFX和MySQL的医院挂号管理系统.zip
- (源码)基于IdentityServer4和Finbuckle.MultiTenant的多租户身份认证系统.zip
- (源码)基于Spring Boot和Vue3+ElementPlus的后台管理系统.zip
- (源码)基于C++和Qt框架的dearoot配置管理系统.zip
- (源码)基于 .NET 和 EasyHook 的虚拟文件系统.zip
- (源码)基于Python的金融文档智能分析系统.zip
- (源码)基于Java的医药管理系统.zip
- (源码)基于Java和MySQL的学生信息管理系统.zip
- (源码)基于ASP.NET Core的零售供应链管理系统.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功