数据结构和算法
棒棒棠。
这个作者很懒,什么都没留下…
展开
-
【数据结构与算法】删除链表中重复的结点(剑指offer)java版
在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5原创 2020-09-27 21:34:48 · 237 阅读 · 0 评论 -
【数据结构与算法】从尾到头打印链表(剑指offer)java版
输入一个链表,按链表从尾到头的顺序返回一个ArrayList。原创 2020-09-20 21:21:26 · 283 阅读 · 2 评论 -
【数据结构与算法】链表中倒数第k个节点(剑指offer)java版
输入一个链表,输出该链表中倒数第k个结点。原创 2020-09-13 21:42:20 · 193 阅读 · 0 评论 -
【数据结构与算法】用两个栈实现队列(剑指offer)java版
用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。原创 2020-09-06 21:34:25 · 178 阅读 · 0 评论 -
【数据结构与算法】二维数组中的查找(剑指offer)java版
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。原创 2020-08-23 21:32:55 · 192 阅读 · 0 评论 -
【数据结构与算法】最小的K个数(剑指offer)java版
每一个中算法都有属于自己的优点,每一道题也不是只有一种方案可以解决,找到最适合的就是最好的原创 2020-08-16 21:04:39 · 213 阅读 · 0 评论 -
【数据结构与算法】常见的数据结构整合
数据结构是指互相之间存在一种或多种特定短息的数据与元素的集合。原创 2020-08-02 23:39:24 · 216 阅读 · 0 评论 -
【数据结构与算法】数组中的重复数字(剑指offer)java版
数组中的重复数字是数组中的经典题目原创 2020-08-09 21:35:05 · 218 阅读 · 0 评论 -
【数据结构与算法】快速排序
什么是冒泡排序?通过对待排序序列从前向后,依次比较相邻元素的值,若你发现逆序则交换,使值较大的元素从前移向后部,就想水底的气泡一样逐渐向上冒。PS:因为在排序的过程中,元素不断接近自己的位置,如果一趟比较下来没有进行过交换,就说明序列有序,因此要在排序过程中设置一个标志flag判断元素是否进行过交换,从而减少不比较的比较。什么是快速排序?是对冒泡排序的一种改进。通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后在按照此方法对这两部分数据分别进行快原创 2020-06-21 21:42:19 · 214 阅读 · 0 评论 -
【数据结构与算法】希尔排序算法的思路与实现
什么是希尔排序算法?在简单插入排序经过一个更高效的版本,也称为缩小增量排序基本思想:希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着真想的逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件就被分到一组,算法终止。简单理解:希尔排序就是根据步长,将所有数据进行分组,将数据进行对比;然后缩小步长,继续进行分组,将数据进行对比,直至步长为1时,结束代码实现交换法:如果你知道冒泡排序的话,有没有感觉二者很相似;二者都需要经过判断进行数据交换 pub原创 2020-05-31 21:32:28 · 641 阅读 · 0 评论 -
【数据结构与算法】迷宫回溯问题实现
什么是递归?简单的说就是自己调用自己,每次传入不同的变量作用就是有助于程序员解决复杂的问题递归可以解决什么问题?各种数学问题:八皇后问题,汉若塔,阶乘问题,迷宫问题各种算法中:比如快速排序、归并排序用于栈解决问题原创 2020-05-17 21:31:39 · 288 阅读 · 0 评论 -
【数据结构与算法】逆波兰表达式计算器的实现(后缀表达式)
什么是逆波兰?中缀表达式转后缀表达式(逆波兰表达式)初始化两个栈:运算符栈s1和存储中间结果的栈s2从左到右扫描中缀表达式遇到操作数时,压入s2遇到运算符时,比较其运算符与s1栈顶的运算符的优先级1)如果s1为空遇到括号时:1)重步骤2-5,直到表达式结束将s1中剩余的运算符依次弹出压入s2依次弹出s2中的元素并输出,结果的逆序就是中缀表达式对应的后缀表达式...原创 2020-05-10 21:04:34 · 330 阅读 · 0 评论 -
【数据结构与算法】栈实现综合计算器(中缀表达式)
什么是栈?栈(stack)是一种线性结构栈是一个先入后出的有序列表展示限制线性表中元素的插入和删除只能在线性表的同一端进行的一种特殊线性表。允许删除和插入的一端,为变化的一端,称为栈顶,另一端为固定的一端,称为栈底。什么时候用栈?子程序的调用:在跳往子程序前,会先将下一个指令的地址存储到堆栈中,直到子程序执行完成后再将地址取出,以回到原来的程序中。处理递归调用:和子程序的调用类似,...原创 2020-05-03 21:30:44 · 440 阅读 · 2 评论 -
【数据结构与算法】约瑟夫(Josephu)问题
什么是约瑟夫问题呢?设编号为1,2,…n的n个人围坐一圈,约定编号为k(1 <= k <= n)的人从1开始报数,数到m的那个人出列,它的下一位又从1开始报数,数到m的那个人又出列,以此类推,知道所有人出列为止,由此产生一个出队编号的序列。提示:用一个不带头节点的循环链表来处理Josephu问题:先构建一个有n个结点的但循环链表,然后由k结点起,从1开始计数,计到m时,对应结点从...原创 2020-04-26 21:31:56 · 638 阅读 · 0 评论 -
【数据结构与算法】单链表的反转
链表介绍链表是以结点的方式来存储,是链式存储每个结点包含data域,next域;指向下一个结点链表的每一个结点不一定是连续存储的链表分带头结点的和没有头结点的链表代码实现 1. 先定义一个几点reverseHead=newHeroNode 2. 从头遍历原本的链表,每遍历一个结点,取出一个结点放在新的链表(reverseHead)的最前面 3. 原本的链表head.next...原创 2020-04-19 21:21:48 · 300 阅读 · 0 评论 -
二维数组和稀疏数组互相转化
稀疏数组简介当数组中大部分数据为0,或者为同一数组时,可以使用稀疏数组来保存。处理方法:记录数组共有几行几列,有多少不同的值把具有不同值的元素行为及值记录在一个小规模的数组中,从而缩小程序的规模例子:某一个数组如下所示:将其转化为稀疏数组:代码实现二维数组转化为稀疏数组: public static void main(String[] args) { ...原创 2020-04-12 20:44:55 · 278 阅读 · 0 评论