数据结构专栏---链表篇
文章平均质量分 83
我们将所有关于链表的题目放到了此专栏
努力彪
但行好事,莫问前程
展开
-
从尾到头打印链表(简单难度)
目录题目概述(简单难度)思路与代码思路展现代码示例题目概述(简单难度)题目链接:从尾到头打印链表思路与代码思路展现栈的特点是后进先出,即最后压入栈的元素最先弹出。考虑到栈的这一特点,使用栈将链表元素顺序倒置。从链表的头节点开始,依次将每个节点压入栈内,然后依次弹出栈内的元素并存储到数组中代码示例class Solution { public int[] reversePrint(ListNode head) { Stack<ListNode> stac原创 2022-02-03 20:17:34 · 504 阅读 · 0 评论 -
链表中倒数第k个节点(简单难度)
目录题目概述思路与代码总结题目概述思路与代码总结题目概述思路与代码原创 2021-07-31 14:41:06 · 84 阅读 · 0 评论 -
旋转链表(中等难度)
目录题目概述(简单难度)思路与代码思路展现代码示例特殊情况特殊情况1特殊情况2特殊情况3特殊情况4核心代码总结题目概述(简单难度)给你一个链表的头节点 head ,旋转链表,将链表每个节点向右移动 k 个位置,k为非负数.示例 1:输入:head = [1,2,3,4,5], k = 2输出:[4,5,1,2,3]示例 2:输入:head = [0,1,2], k = 4输出:[2,0,1]在此附上leetcode链接:点击此处进入leetcode思路与代码思路展现这道原创 2021-08-13 14:37:52 · 124 阅读 · 0 评论 -
删除链表中间节点(变形题目,简单难度)
目录题目概述(简单难度)思路与代码思路展现代码示例总结题目概述(简单难度)若链表中的某个节点,既不是链表头节点,也不是链表尾节点,则称其为该链表的「中间节点」。假定已知链表的某一个中间节点,请实现一种算法,将该节点从链表中删除。例如,传入节点 c(位于单向链表 a->b->c->d->e->f 中),将其删除后,剩余链表为 a->b->d->e->f在此附上leetcode链接:点击此处进入leetcode思路与代码思路展现这道题目原创 2021-08-10 16:15:47 · 206 阅读 · 2 评论 -
环形链表Ⅱ(中等难度)
目录题目概述(中等难度)思路与代码思路展现代码示例总结题目概述(中等难度)给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意,pos 仅仅是用于标识环的情况,并不会作为参数传递到函数中。说明:不允许修改给定的链表。进阶:你能用 空间复杂度O(1)解决此问题吗?示例 1:输入:head = [3,2,0,-4原创 2021-08-10 13:00:18 · 240 阅读 · 1 评论 -
删除链表的节点(简单难度)
目录题目概述(简单难度)思路与代码思路展现代码示例总结题目概述(简单难度)给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 。示例 1:输入:head = [1,2,6,3,4,5,6], val = 6输出:[1,2,3,4,5]示例 2:输入:head = [], val = 1输出:[]示例 3:输入:head = [7,7,7,7], val = 7输出:[]思路与代码思路原创 2021-08-09 19:44:23 · 233 阅读 · 0 评论 -
两个链表的第一个公共节点(简单难度)
目录题目概述思路与代码思路展现代码示例总结题目概述附上leetcode链接:点击此处进入leetcode链接思路与代码思路展现代码示例总结原创 2021-08-09 13:38:03 · 601 阅读 · 0 评论 -
环形链表Ⅰ(简单难度)
目录题目概述(简单难度)思路与代码思路展现代码示例总结题目概述(简单难度)给定一个链表,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。如果链表中存在环,则返回 true 。 否则,返回 false 。进阶:你能用 空间复杂度O(1)解原创 2021-08-08 12:04:36 · 255 阅读 · 0 评论 -
链表的回文结构(简单难度)
目录题目概述(简单难度)思路与代码思路展现代码示例总结题目概述(简单难度)对于一个链表,请设计一个时间复杂度为O(n),额外空间复杂度为O(1)的算法,判断其是否为回文结构。给定一个链表的头指针A,请返回一个boolean值,代表其是否为回文结构。保证链表长度小于等于900。示例 1:输入: 1->2输出: false示例 2:输入: 1->2->2->1输出: true在此附上牛客网和leetcode的题目链接:点击此处进入leetcode点击此处进原创 2021-08-06 20:11:46 · 877 阅读 · 0 评论 -
删除链表中重复的结点(手把手带你理解思路,从错误代码带你逐步完善代码,非常实用!)
目录题目概述(简单难度)思路与代码思路展现代码示例代码解析正常情况特殊情况1特殊情况2特殊情况3特殊情况4总结题目概述(简单难度)在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5示例1输入:{1,2,3,3,4,4,5}返回值:{1,2,5}附上牛客网链接:点击此处进入牛客网思路与代码思路展现1:既然是删除链表中的原创 2021-08-04 17:26:02 · 402 阅读 · 0 评论 -
反转链表(面试常考,非常重要)
目录题目概述思路与代码思路展现代码示例总结题目概述给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。示例 1:输入:head = [1,2,3,4,5]输出:[5,4,3,2,1]示例 2:输入:head = [1,2]输出:[2,1]示例 3:输入:head = []输出:[]附上leetcode链接:点击此处进入leetcode思路与代码思路展现反转链表这个题目的思路非常的巧妙,在此我们先讲迭代法:迭代法的思路是这样的:1:首先定义一个原创 2021-08-03 19:38:04 · 153 阅读 · 0 评论 -
链表的分割(简单难度)
目录题目概述(简单难度)思路与代码思路展现理想情况特殊情况特殊情况1特殊情况2特殊情况3(`最容易忽略的点`)代码示例总结题目概述(简单难度)现有一链表的头指针 ListNode* pHead,给一定值x,编写一段代码将所有小于x的节点排在其余结点之前,且不能改变原来的数据顺序,返回重新排列后的链表的头指针。在此附上牛客网的链接:点击此处进入牛客网思路与代码思路展现理想情况思路:既然现在给定了一个x值,需要将小于x的节点排在其余结点之前,且不能改变原来的数据顺序,那么我们此时可以定义两个链原创 2021-08-03 17:14:49 · 338 阅读 · 0 评论 -
合并两个有序链表(面试常考,非常重要)
目录题目概述(简单难度)思路与代码思路展现代码示例总结题目概述(简单难度)将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例 1:输入:l1 = [1,2,4], l2 = [1,3,4]输出:[1,1,2,3,4,4]示例 2:输入:l1 = [], l2 = []输出:[]示例 3:输入:l1 = [], l2 = [0]输出:[0]最后附上leetcode的链接点击此处进行跳转思路与代码思路展现我们首先来审原创 2021-08-02 16:36:09 · 163 阅读 · 0 评论 -
链表的中间节点(简单难度)
目录题目概述(简单难度)思路与代码思路展现思路一思路二代码示例总结题目概述(简单难度)给定一个头结点为 head 的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。示例 1:输入:[1,2,3,4,5] 输出:此列表中的结点 3 (序列化形式:[3,4,5]) 返回的结点值为 3 。(测评系统对该结点序列化表述是 [3,4,5])。 注意,我们返回了一个 ListNode 类型的对象 ans,这样:ans.val =3, ans.next.val = 4, ans.原创 2021-08-01 17:46:59 · 2347 阅读 · 0 评论