链表
王根生
只有工作才感觉到活着
展开
-
数据结构-双向链表
无头双向链表在Java的集合框架库中LinkedList底层实现就是无头双向循环链表。无头双向循环链表实现链表的功能实现代码class Node { public int data;//保存数据 public Node next; public Node prev; public Node (int data){ this.data = data; }}public class MyLinkedList { public Node原创 2021-08-13 23:20:12 · 91 阅读 · 0 评论 -
链表面试常考题-相交链表+合并两个有序链表
题目描述:给你两个单链表的头结点headA和headB,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回null。图示两个链表在节点c1开始相交:题目数据保证整个链式结构中不存在环。注意,函数返回结果后,链表必须保持其原始结构。示例描述:示例1:输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3输出:Intersected at ‘8’解释:相交节点原创 2021-08-09 12:41:05 · 347 阅读 · 0 评论 -
链表面试-详解环形链表题
题目描述:给定一个链表,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪next指针再次到达,则链表中存在环。为了表示给定链表中的环,我们使用整数pos来表示链表尾连接到链表中的位置(索引从0开始)。如果pos是-1,则在该链表中没有环。注意:pos不作为参数进行传递,仅仅是为了标识链表的实际情况。如果链表中存在环,则返回true。否则,返回false。示例描述:示例1:示例2:示例3:个人理解:该题使用fast,slow快慢双指针,首先在起始位置定义两个快慢指针。让f原创 2021-08-08 19:46:38 · 191 阅读 · 0 评论 -
链表面试-链表的回文结构(常考题)
题目描述:对于一个链表,请设计一个时间复杂度为O(n),额外空间复杂度为O(1)的算法,判断其是否为回文结构。给定一个链表的头指针A,请返回一个boolean值,代表其是否为回文结构。保证链表长度小于等于900。示例描述:示例1::1->2->2->1返回:true示例2:1->2->3->2->1返回:true...原创 2021-08-08 15:40:55 · 125 阅读 · 0 评论 -
链表面试-删除链表中重复的节点(常考题)
题目描述:在一个排序的链表中,存在重复的节点,请删除该链表中重复的节点,重复的节点不保留,返回链表头指针。例如,链表1->2->3->3->4->4->5处理后为1->2->5示例描述:输入:{1,2,3,3,4,4,5}返回值:{1,2,5}最后一个节点不是重复的节点的情况:最后一个节点也是重复的节点的情况:此时就需要把最后的节点的next置为null,所以最后要增加一步,无论是这两种中的那种情况,一律在最后加一个tmp.next =原创 2021-08-07 21:45:31 · 476 阅读 · 2 评论 -
链表面试-链表分割(常考题)
题目描述:编写代码,以给定值x为基准将链表分割成两部分,所有小于x的节点排在大于或等于x的节点之前,给定一个链表的头指针ListNode* pHead,请返回重新排列后的链表的头指针。注意:分割以后保持原来的数据顺序不变。示例描述:x=12,原链表如下:两个线段存放节点过程:分割后的链表如下:个人理解:本题用两个线段来存放比x小的节点和大于等于x的节点,刚开始的时候两个线段的头尾bs,be;as,ae;先置为null定义一个cur,在原来的链表中进行遍历如果cur.val<x原创 2021-08-07 17:20:07 · 709 阅读 · 3 评论 -
链表面试-链表中倒数第k个节点(常考题)
题目描述:输入一个链表,输出该链表中倒数第k个节点。示例描述:输入: 1,{1,2,3,4,5}返回值:{5}个人理解:该题首先要判断head是否为null的情况以及k的合法性{这里如果用k<=0||k>size()认定输入的k不合法的话,会遍历这个链表两遍,我们为了提高效率一般是禁止遍历链表两遍的,所以我们在fast走k-1步的那个循环里加个判断条件,如果不满足条件就不让fast继续走下去了,return null}然后用fast,slow双指针,要想找倒数第k个节点,首先先让原创 2021-08-04 22:48:08 · 175 阅读 · 0 评论 -
链表面试-链表的中间节点(常考题)
题目描述:给定一个头节点为head的非空单链表,返回链表的中间节点。如果有两个中间节点,则返回第二个中间节点。示例描述:原创 2021-08-04 21:04:38 · 175 阅读 · 0 评论 -
链表面试-反转链表(常考题)
题目描述:给你单链表的头节点head,请你反转链表,并返回反转后的链表。示例描述:题解实现:/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val = val; } * ListNode(int val, ListNod原创 2021-08-03 22:26:38 · 407 阅读 · 0 评论 -
链表面试题
文章目录在线OJ的基本规则链表算法笔试题力扣203.移除链表元素在线OJ的基本规则在线OJ中,系统后台会根据当前题目提供很多的,更丰富的测试数据,此时写的代码如果考虑不全面,就很容易跑不过。因此,“本地能跑过,提交跑不过”这样的情况是常见的,原因就是细节没考虑全面。链表算法笔试题力扣203.移除链表元素问题描述:给你一个链表的头节点head和一个整数val,请你删除链表中所有满足Node.val == val的节点,并返回新的头节点。该题示例:代码题解:/** * Definition原创 2021-08-03 17:46:54 · 66 阅读 · 0 评论 -
数据结构-链表(非常重要)
链表的概念及结构链表是一种物理存储结构上非连续存储结构,数据元素的逻辑顺序是通过链表中的引用链接次序实现的。实际中链表的结构非常多样,虽然有这么多的链表的结构,但是重点掌握两种:无头单向非循环链表:结构简单,一般不会单独用来存数据。实际中更多是作为其他数据结构的子结构,如哈希桶,图的邻接表等等。另外这种结构在笔试面试中出现很多。无头双向链表:在Java的集合框架中LinkedList底层实现就是无头双向循环链表。链表的实现测试文件public class TestDemo2 {原创 2021-08-03 15:19:04 · 464 阅读 · 3 评论