算法
文戌
这个作者很懒,什么都没留下…
展开
-
5.栈java数组实现,栈实现综合计算器(中缀表达式)
6.栈6.1栈的介绍栈的英文为(stack)栈是一个先入后出(FILO-First In Last Out)的有序列表。栈(stack)是限制线性表中元素的插入和删除只能在线性表的同一端进行的一种特殊线性表。允许插入和删除的 一端,为变化的一端,称为栈顶(Top),另一端为固定的一端,称为栈底(Bottom)。根据栈的定义可知,最先放入栈中元素在栈底,最后放入的元素在栈顶,而删除元素刚好相反,最后放入的元 素最先删除,最先放入的元素最后删除图解方式说明出栈(pop)和入栈(push)的概念原创 2021-08-18 20:47:35 · 133 阅读 · 0 评论 -
4.Josephu约瑟夫问题java实现(环形链表)
5.4.1约瑟夫问题Josephu(约瑟夫、约瑟夫环) 问题为:设编号为 1,2,… n 的 n 个人围坐一圈,约定编号为 k(1<=k<=n)的人从 1 开始报数,数 到 m 的那个人出列,它的下一位又从 1 开始报数,数到 m 的那个人又出列,依次类推,直到所有人出列为止,由 此产生一个出队编号的序列。5.4.2解决思路用一个不带头结点的循环链表来处理 Josephu 问题:先构成一个有 n 个结点的单循环链表,然后由 k 结点起从 1 开 始计数,计到 m 时,对应结点从链表中删除,原创 2021-08-18 20:44:14 · 4391 阅读 · 0 评论 -
1.稀缺数组java实现
1.稀缺数组介绍当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组。稀疏数组的处理方法是:记录数组一共有几行几列,有多少个不同的值把具有不同值的元素的行列及值记录在一个小规模的数组中,从而缩小程序的规模2.代码实现//稀缺数组//将存放棋盘的二位数组转化为稀缺数组public class SparseArray { public static void main(String[] args) { //创建一个原始的二维数组11*11原创 2021-08-17 12:43:26 · 118 阅读 · 0 评论 -
2.Java实现队列以及环形队列
1队列队列是一个有序列表,可以用数组或是链表来实现。遵循先入先出的原则。即:先存入队列的数据,要先取出。后存入的要后取出1.1数组模拟队列队列本身是有序列表,若使用数组的结构来存储队列的数据,则队列数组的声明如下图, 其中 maxSize 是该队列的最大容量。因为队列的输出、输入是分别从前后端来处理,因此需要两个变量 front 及 rear 分别记录队列前后端的下标, front 会随着数据输出而改变,而 rear 则是随着数据输入而改变。public class ArrayQueueDem转载 2021-08-17 13:03:41 · 106 阅读 · 0 评论 -
3.单链表Java实现(包括增删改查遍历链表,逆转链表,快慢指针查找倒数节点,递归逆序打印)
1.链表(完整代码在尾部)1.1链表介绍链表是有序的列表,但是它在内存中是存储如下链表是以节点的方式来存储,是链式存储每个节点包含 data 域, next 域:指向下一个节点.如图:发现链表的各个节点不一定是连续存储.链表分带头节点的链表和没有头节点的链表,根据实际的需求来确定1.2单链表的应用实例使用带 head 头的单向链表实现 –水浒英雄排行榜管理完成对英雄人物的增删改查操作//定义英雄节点class HeroNode{ public int no;原创 2021-08-17 19:36:26 · 213 阅读 · 0 评论 -
动态规划算法java代码实现
两个例子,使用动态规划算法解决第一个例子是LeetCode题目:面试题 17.16:按摩师一个有名的按摩师会收到源源不断的预约请求,每个预约都可以选择接或不接。在每次预约服务之间要有休息时间,因此她不能接受相邻的预约。给定一个预约请求序列,替按摩师找到最优的预约集合(总预约时间最长),返回总的分钟数。递归方法 :public static int rec_opt(int []arr,i...原创 2020-03-25 18:39:03 · 248 阅读 · 0 评论 -
快慢指针java实现快速排序
今天学习数据结构快速排序时发现网上有很多种快速排序的方法,于是我选择了算法导论上面一种比较标准的快慢指针的方法实现了.实现思路来自b站: https://www.bilibili.com/video/av47837026import java.util.Arrays;public class QuickSort { public static void quickSort(i...原创 2020-03-21 18:41:44 · 317 阅读 · 0 评论 -
leetcode--206&92. 反转链表
题目:反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL思路一:反转指针,设置三个指针,分别指向前中后,依次将指针反转,并将head指向原来的尾部要注意的特殊情况: [],[1] public ListNode reverseList(ListNode he...原创 2020-03-21 12:33:34 · 113 阅读 · 0 评论 -
腐烂的橘子问题,纯java解,未用BFS
问题来源于leetcode在给定的网格中,每个单元格可以有以下三个值之一:值 0 代表空单元格;值 1 代表新鲜橘子;值 2 代表腐烂的橘子。每分钟,任何与腐烂的橘子(在 4 个正方向上)相邻的新鲜橘子都会腐烂。返回直到单元格中没有新鲜橘子为止所必须经过的最小分钟数。如果不可能,返回 -1。链接:https://leetcode-cn.com/problems/rotting-or...原创 2020-03-16 13:29:45 · 308 阅读 · 0 评论