
链表
鯉鱼
妹妹你大胆地往前走呀
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
从尾到头打印链表
在不允许改变链表结构的情况下可以考虑用栈存储数据或者用递归的方法处理//递归的方法 ArrayList<Integer> list=new ArrayList<>(); public ArrayList<Integer> printListFromTailToHead(ListNode listNode) { if(listNode!=null) {...原创 2019-05-18 22:33:46 · 177 阅读 · 0 评论 -
两个链表的第一个公共结点
题目描述:输入两个链表,找出它们的第一个公共结点。当不存在公共节点时,返回空节点。样例:相交节点为8。分析:如果两个链表有公共节点,那么第一个公共节点之后的节点两个链表完全相同,所以不同的部分仅在公共节点之前。首先遍历两个链表得到两个链表的长度,在第二次遍历时,首先在较长的链表上先走若干步(长度差),接着同时在两个链表上遍历,找到的第一个相同的节点就是他们的第一个公共节点。//执行用...原创 2019-05-20 20:42:57 · 213 阅读 · 0 评论 -
有序链表转换二叉搜索树
题目描述:给定一个单链表,其中的元素按升序排序,将其转换为高度平衡的二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。样例:给定的有序链表: [-10, -3, 0, 5, 9],一个可能的答案是:[0, -3, 9, -10, null, 5], 它可以表示下面这个高度平衡二叉搜索树:分析:将有序链表转换成高度平衡的二叉树经过...原创 2019-05-16 21:40:39 · 721 阅读 · 0 评论 -
二叉树展开为链表
题目描述:给定一个二叉树,原地将它展开为链表。样例:给定一棵二叉树如下:将其展开为:分析:如果节点为空或者节点的左右孩子节点均为空则直接返回若左右孩子节点均存在,则分别对节点的左右子树操作。首先将其左子树转换成链表,然后将其右子树转换成链表;将该节点的右子树保存到副本中,将左子树赋给右指针,遍历当前结点右孩子节点的右子树,直到为空,将最后一个节点的右指针指向原来保存的副本节点,即...原创 2019-05-16 20:44:45 · 335 阅读 · 0 评论 -
复杂链表的复制
题目描述:请实现一个函数可以复制一个复杂链表。在复杂链表中,每个结点除了有一个指针指向下一个结点外,还有一个额外的指针指向链表中的任意结点或者null。样例:节点 1 的值是 1,它的下一个指针和随机指针都指向节点 2 。节点 2 的值是 2,它的下一个指针指向 null,随机指针指向它自己。分析:第一步:对链表中的每一个节点进行复制,并将被复制节点的next指针指向复制节点。...原创 2019-05-16 20:05:36 · 224 阅读 · 0 评论 -
合并K个排序的链表
题目描述:合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。样例:输入:[1->4->5,1->3->4,2->6]输出: 1->1->2->3->4->4->5->6分析:采用分治法,将k个链表平均拆分成两组,分别进行对同一组内的合并,最终组间再合并。public ListNode...原创 2019-05-15 22:47:22 · 139 阅读 · 0 评论 -
合并两个有序的链表
题目描述:将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。样例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4public ListNode mergeTwoLists(ListNode l1, ListNode l2) { if(l1==nul...原创 2019-05-15 22:12:02 · 137 阅读 · 0 评论 -
反转链表
声明一个节点pre初始化为null,声明next节点保存当前结点的next节点,然后令当前结点的next节点指向pre,再将当前结点赋给pre,最后将next节点赋给当前节点,直到当前结点为空遍历结束,返回pre节点。public ListNode reverseList(ListNode head) { if(head==null||head.next==null) ...原创 2019-05-15 21:57:16 · 159 阅读 · 0 评论 -
链表中环的入口节点
题目描述:给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。说明:不允许修改给定的链表。样例:输入:head = [3,2,0,-4], pos = 1输出:tail connects to node index 1...原创 2019-05-15 21:24:05 · 437 阅读 · 0 评论 -
删除链表的倒数第N个节点
题目描述:给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。样例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.分析:如何只遍历链表一次就能找到倒数第n个节点。定义两个指针p1和p2分别指向头结点,首先让p1开始遍历,p2保持不动,当p1走到第k个节点时...原创 2019-05-15 19:01:10 · 161 阅读 · 0 评论 -
删除链表中重复的元素
题目描述:给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字。样例:输入: 1->2->3->3->4->4->5输出: 1->2->5分析:从头结点开始遍历该链表,如果当前结点的值与下一个节点的值相同,那么他们就是重复的节点,都要被删除。因此为了使删除重复节点之后的链表仍然相连,我们要把该节点的上一个节...原创 2019-05-15 11:03:01 · 3242 阅读 · 1 评论 -
删除链表中的节点
题目描述:请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点。样例:输入: head = [4,5,1,9], node = 1输出: [4,5,9]解释: 给定你链表中值为 1 的第三个节点,那么在调用了你的函数之后,该链表应变为 4 -> 5 -> 9.说明:链表至少包含两个节点。链表中所有节点的值都是唯一的。给定的节点为非末...原创 2019-05-15 09:13:09 · 784 阅读 · 0 评论 -
判断一个链表是否是回文结构
题目描述给定一个链表的头结点,判断该链表是否是回文结构样例1->2->1 返回true1->2->2->1 返回true1->2->3 返回false题解方法一:从左到右遍历链表,遍历的过程中将每个节点依次入栈待所有节点入栈后,从栈顶到栈底中元素的值和链表中从左至右的值如果相等则证明是回文结构,否则不是public static b...原创 2019-08-03 17:39:01 · 319 阅读 · 0 评论