数据结构与算法 —— Java实现
文章平均质量分 76
L_cl
一切都会好的
展开
-
数据结构与算法——Java实现 27.双端队列
队列一端删除(头),一段添加(尾) 先进先出(FIFO)栈一端删除和添加 后进先出(LIFO)双端队列队列的两端都可以添加、删除。原创 2024-10-03 20:17:10 · 257 阅读 · 0 评论 -
数据结构与算法——Java实现 26.单队列模拟栈
请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(pushtoppop和empty实现MyStackint pop()int top()truefalsesizeis empty// 返回 2// 返回 2// 返回 False100pushpoptopemptypoptop你能否仅用一个队列来实现栈。原创 2024-09-29 09:43:23 · 703 阅读 · 0 评论 -
数据结构与算法——Java实现 25.双栈模拟队列
请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(pushpoppeekempty):实现MyQueueint pop()int peek()truefalsesizeis empty100pushpoppeekemptypoppeekO(1)nO(n)原创 2024-09-29 09:16:56 · 794 阅读 · 0 评论 -
数据结构与算法——Java实现 24.中缀表达式转后缀
Java中的编译器会将我们编写代码中的中缀表达式转化为后缀表达式,然后编译好输出程序。原创 2024-09-28 22:01:43 · 406 阅读 · 0 评论 -
数据结构与算法——Java实现 23.逆波兰表达式求值(后缀表达式)
给你一个字符串数组tokens,表示一个根据表示的算术表达式。请你计算该表达式。返回一个表示表达式值的整数。'+''-''*''/'9该算式转化为常见的中缀算术表达式为:((2 + 1) * 3) = 96该算式转化为常见的中缀算术表达式为:(4 + (13 / 5)) = 622该算式转化为常见的中缀算术表达式为:= 17 + 5= 22"+""-""*""/"逆波兰表达式是一种后缀表达式,所谓后缀就是指算符写在后面。原创 2024-09-28 16:35:11 · 860 阅读 · 0 评论 -
数据结构与算法——Java实现 22.有效的括号
给定一个只包括'('')''{''}''['']'的字符串s,判断字符串是否有效。原创 2024-09-28 15:50:17 · 285 阅读 · 0 评论 -
数据结构与算法——Java实现 21.栈
计算机科学中,stack是一种线性的数据结构,只能在其一端添加数据和移除数据。习惯来说,这一端称之为栈顶,另一端不能操作数据的称之为栈底,就如同生活中的一摞书。原创 2024-09-28 15:13:46 · 298 阅读 · 0 评论 -
数据结构与算法——Java实现 20.习题——二叉树层序遍历
对二叉树每一层进行遍历,知道遍历到每一个结点的叶子节点为止叶子节点即左孩子右孩子都为null时的节点是叶子节点从左到右每层进行遍历,每遍历一个节点,将节点存入队列中,最终返回队列原创 2024-09-27 20:50:20 · 266 阅读 · 0 评论 -
数据结构与算法——Java实现 19.队列
计算机科学中,queue 是以顺序的方式维护的一组数据集合,在一端添加数据,从另一端移除数据。习惯来说,添加的一端称为尾,移除的一端称为头,就如同生活中的排队买商品offer:向队列尾部插入值poll:从队列头部获取值,并移除peek:从队列头获取值,不移除isEmpty:检查队列是否为空isFull:检查队列是否为满/*向队列尾部插入值Params:value-待插入值Returns:插入成功返回true,插入失败返回false*//*从队列头获取值,并移除。原创 2024-09-27 19:59:26 · 327 阅读 · 0 评论 -
数据结构与算法——Java实现 18.习题——环形链表Ⅱ
给定一个链表的头节点head,返回链表开始入环的第一个节点。如果链表无环,则返回null。如果链表中有某个节点,可以通过连续跟踪next指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整数pos来表示链表尾连接到链表中的位置(如果pos是-1,则在该链表中没有环。pos,仅仅是为了标识链表的实际情况。链表。返回索引为 1 的链表节点链表中有一个环,其尾部连接到第二个节点。返回索引为 0 的链表节点链表中有一个环,其尾部连接到第一个节点。返回 null链表中没有环。原创 2024-09-24 21:27:36 · 315 阅读 · 0 评论 -
数据结构与算法——Java实现 16.习题——链表中是否存在环
给你一个链表的头节点head,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪next指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整数pos来表示链表尾连接到链表中的位置(索引从 0 开始)。pos。仅仅是为了标识链表的实际情况。如果链表中存在环,则返回true。否则,返回false。true链表中有一个环,其尾部连接到第二个节点。true链表中有一个环,其尾部连接到第一个节点。false链表中没有环。-1。原创 2024-09-24 21:10:32 · 374 阅读 · 0 评论 -
数据结构与算法——Java实现 17.习题——合并两个有序数组
给你两个按排列的整数数组nums1和nums2,另有两个整数m和n,分别表示nums1和nums2中的元素数目。请你nums2到nums1中,使合并后的数组同样按排列。最终,合并后数组不应由函数返回,而是存储在数组nums1中。为了应对这种情况,nums1的初始长度为m + n,其中前m个元素表示应合并的元素,后n个元素为0,应忽略。nums2的长度为n。需要合并 [1,2,3] 和 [2,5,6]。合并结果是 [,2,,5,6] ,其中斜体加粗标注的为 nums1 中的元素。[1]原创 2024-09-24 18:02:06 · 292 阅读 · 0 评论 -
数据结构与算法——Java实现 15.习题——判断回文链表
给你一个单链表的头节点head,请你判断该链表是否为回文链表如果是,返回true;否则,返回false。原创 2024-09-24 09:55:12 · 589 阅读 · 0 评论 -
数据结构与算法——Java实现 14.习题——查找链表的中间节点
给你单链表的头结点head,请你找出并返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。[3,4,5]链表只有一个中间结点,值为 3。[4,5,6]该链表有两个中间结点,值分别为 3 和 4 ,返回第二个结点。原创 2024-09-23 16:58:51 · 217 阅读 · 0 评论 -
数据结构与算法——Java实现 13.习题——合并k个升序链表
给你一个链表数组,每个链表都已经按升序排列。请你将所有链表合并到一个升序链表中,返回合并后的链表。链表数组如下:1->4->5,1->3->4,2->6将它们合并到一个有序链表中得到。原创 2024-09-23 16:24:31 · 661 阅读 · 0 评论 -
数据结构与算法——Java实现 12.习题——合并有序链表
将两个升序链表合并为一个新的链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。[][0]l2。原创 2024-09-23 15:55:32 · 589 阅读 · 0 评论 -
数据结构与算法——Java实现 11.习题——有序链表去重
给定一个已排序的链表的头head删除原始链表中所有重复数字的节点,只留下不同的数字。返回已排序的链表。原创 2024-09-23 10:07:18 · 426 阅读 · 0 评论 -
数据结构与算法——Java实现 10.习题——删除有序链表重复节点
给定一个已排序的链表的头head删除所有重复的元素,使每个元素只出现一次。返回已排序的链表。原创 2024-09-22 20:37:33 · 327 阅读 · 0 评论 -
数据结构与算法——Java实现 9.习题——删除链表倒数节点
给你一个链表,删除链表的倒数第n个结点,并且返回链表的头结点。原创 2024-09-22 17:49:40 · 917 阅读 · 0 评论 -
数据结构与算法——Java实现 8.习题——移除链表元素(值)
/ 可变长参数@Overridewhile (p!原创 2024-09-22 16:03:24 · 351 阅读 · 0 评论 -
数据结构与算法——Java实现 7.习题——反转链表
给你单链表的头节点head,请你反转链表,并返回反转后的链表。原创 2024-09-21 22:40:07 · 999 阅读 · 0 评论 -
数据结构与算法——Java实现 6.递归
计算机科学中,递归是一种解决计算问题的方法,其中解决方案取决于同一类问题的更小子集① 自己调用自己,如果说每个函数对应着一种解决方案,自己调用自己意味着解决方案是一样的(有规律的)② 每次调用,函数处理的数据会较上次缩减(子集),而且最后会缩减至无需继续递归③ 内层函数调用(子集处理)完成,外层函数才能算调用完成(内层完成,外层才能完成——先处理子问题。原创 2024-09-20 21:24:31 · 746 阅读 · 0 评论 -
数据结构与算法——Java实现 5.链表
在计算机科学中,链表是根据数据元素的线性集合,其每个元素都指向下一个元素,元素存储上并不连续寻找链表最后一个元素位置// 1.2 找到最后一个结点// 判断是否为空链表Node p;p.next!= null;return p;// 2.4 删除链表中最后一个节点String.format("链表为空,删除位置不合法"));// 找到倒数第二个节点= null) {return;// 2.1 找到最后一个结点Node p;// 一直遍历直到找到最后一个节点p.next。原创 2024-09-17 15:19:12 · 717 阅读 · 0 评论 -
数据结构与算法——Java实现 4.数组
在计算机科学中,数组是由一组元素(值或变量)组成的数据结构。每个元素有至少一个索引或键来标识(元素的类型必须一致// size代表数组内有效元素个数// size++;// 按索引查找元素。原创 2024-09-08 17:37:39 · 605 阅读 · 0 评论 -
数据结构与算法——Java实现 1.初识算法 —— 二分查找
在有序数组A内,查找值 target,如果找到返回索引,如果找不到返回 -1。原创 2024-08-27 17:30:05 · 637 阅读 · 0 评论 -
数据结构与算法——Java实现 2.衡量算法好坏的标准
为了对 f(n)进行化简,应当抓住主要矛盾,找到一个变化趋势与之相近的表示法。与时间复杂度类似,一般也使用大O表示法来衡量:一个算法执行随数据规模增大,而。假设算法要处理的数据规模是n,代码总的执行行数用函数 f(n)来表示。③ 不同底数的对数,渐进上界可以用一个对数函数 log n 表示。时间复杂度是用来衡量:一个算法的执行,随数据规模增大,而。② 多项式中数量规模更小(低次项)的表达式。① 表达式中相乘的常量,可以省略。④ 类似的,对数的常数次幂可省略。已知 f(n) ,求 g(n)原创 2024-08-27 17:53:55 · 930 阅读 · 0 评论 -
数据结构与算法——Java实现 3.二分查找——Java版
1,是为了避免在第一个位置插入时,返回0与查找元素刚好处在第一个位置重复的这种情况,+1可以分辨这两种情况,观察是否返回的是负数。若在目标数组中找不到元素,则返回的是负的(插入该点的位置+1)当数组中存在多个待查找的元素时,观察寻找最左侧元素的位置。当数组中存在多个待查找的元素时,观察寻找最右侧元素的位置。当数组中存在多个待查找的元素时,观察寻找最左侧元素的位置。若是找到则返回元素位置,若是找不到则返回插入时的插入位置。当数组中存在多个待查找的元素时,观察寻找最右侧元素的位置。原创 2024-08-31 18:40:02 · 806 阅读 · 0 评论 -
数据结构与算法 二分查找有关算法题
给定一个n个元素有序的(升序)整型数组nums和一个目标值target,写一个函数搜索nums中的target,如果目标值存在返回下标,否则返回-1。numstarget= 949 出现在nums中并且下标为 4numstarget= 2-12 不存在nums中因此返回 -11.你可以假设nums中的所有元素是不重复的。2.n将在[1, 10000]之间。3.nums的每个元素都将在之间。原创 2024-08-31 21:38:15 · 567 阅读 · 0 评论