
数据结构与算法
数据结构与算法
@从入门到入土
学无止境
展开
-
LeetCode两数之和、三数之和(Java)
LeetCode第1题:两数之和给定一个整数数组nums和一个目标值target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所...原创 2020-01-24 23:43:14 · 350 阅读 · 0 评论 -
线性表总结(Java实现)
基本概念线性表是一种逻辑结构,相同数据类型的n个数据元素的有限序列,除第一个元素外,每个元素有且仅有一个直接前驱,除最后一个元素外,每个元素有且仅有一个直接后继。线性表具有以下特点:元素个数有限 逻辑上元素有先后次序 数据类型相同 仅讨论元素间的逻辑关系数组和链表数组的优点结点分布在连续的内存空间上,随机访问性强,查找速度快数组的缺点插入和删除可能导致结点位...原创 2019-01-26 17:23:40 · 2341 阅读 · 0 评论 -
栈总结(Java实现)
我们可以将栈看成一个箱子:往箱子里面放东西叫做入栈 往箱子里面取东西叫做出栈 箱子的底部叫做栈底 箱子的顶部叫做栈顶 说到栈的特性,总结四个字:先进后出 往箱子里边放苹果,箱子底部的苹果想要拿出来,得先把箱子顶部的苹果取走才行栈的应用场景:括号问题的求解 表达式的转换和求值 函数调用和递归实现 深度优先搜索遍历栈的基本操作实现:入栈 出栈 返回栈顶元...原创 2019-01-27 17:18:22 · 358 阅读 · 0 评论 -
队列总结(Java实现)
我们可以将队列看成小朋友排队打饭:有小朋友到指定的地点了-->出队 有新的小朋友加入了-->入队 相对于栈而言,队列的特性是:先进先出 先排队的小朋友肯定能先打到饭!栈和队列的比较:栈(Stack)和队列(Queue)是两种操作受限的线性表。这种受限表现在:栈的插入和删除操作只允许在表的尾端进行(在栈中成为“栈顶”),满足“First In Last Out”;队列只允...原创 2019-01-29 23:43:20 · 516 阅读 · 0 评论 -
二叉树总结(Java实现)
基本概念二叉树(Binary Tree)是每个节点最多有两个子树的树结构。通常子树被称作“左子树”(left subtree)和“右子树”(right subtree)。二叉树的特点:二叉树不存在度大于2的结点。 二叉树的子树有左右之分,次序不能颠倒。斜树所有的结点都只有左子树的二叉树叫左斜树,所有的结点都只有右子树的二叉树叫右斜树,这两者统称为斜树。斜树每一层只有一个结点...原创 2019-02-02 20:11:23 · 2581 阅读 · 0 评论 -
散列表
基本概念散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。数组的特点是:寻址容易,插入和删除困难。而链表的特点是:寻址困难,插入和删除容易。散列表结合了两者的优势,寻址容易,插入删除也容易。实现原理...原创 2019-02-24 23:57:31 · 1943 阅读 · 0 评论 -
快速排序(Java实现)
基本思想选择一个基准元素,通常选第一个或最后一个,通过一趟扫描,将待排序的元素分成两部分,一部分比基准元素小,一部分大于等于基准元素,此时基准元素在其排好的正确位置,然后再用同样的方式递归划分后的两部分。时间复杂度:O(nlogn)动图演示代码实现public class Sort { /** * 快速排序 * @param array ...原创 2019-02-25 00:10:30 · 1519 阅读 · 0 评论 -
二分查找(Java实现)
算法要求1. 必须采用顺序存储结构。2. 必须按关键字大小有序排列。查找过程首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止...原创 2019-03-22 11:10:06 · 1507 阅读 · 0 评论