Leetcode链表专题

目录

Leetcode019删除链表的倒数第N个数--------快慢指针:

地址:

描述: (进阶扫描一次实现)

题解:

Leetcode083 删除排序链表中的重复元素

描述:

 思想:

 问题

 代码:

Leetcode 082删除排序链表中重复元素II

地址

描述

思想

代码

Leetcode061(旋转链表)--------快慢指针

描述:

 题解:

Leetcode024两两交换链表中的节点-------(for循环的妙用&&链表接连的顺序)

描述:

 题解:

Leetcode206(翻转整段单链表)--------迭代法运用

描述:

Leetcode092(规定左右边界翻转区域内的链表)------迭代法

描述:

题解: 

Leetcode106(相交链表)--------我走过你来时的路&&注意不要陷入死循环

描述:

题解:

Leetcode141、142(环形链表)--------快慢指针判断有没有环

描述:

 题解:


Leetcode019删除链表的倒数第N个数--------快慢指针:

地址:

力扣

描述: (进阶扫描一次实现)

题解:

Leetcode019删除链表的倒数第N个数--------快慢指针_Myblog-CSDN博客

Leetcode083 删除排序链表中的重复元素

描述:

 思想:

 问题

 代码:

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode() : val(0), next(nullptr) {}
 *     ListNode(int x) : val(x), next(nullptr) {}
 *     ListNode(int x, ListNode *next) : val(x), next(next) {}
 * };
 */
class Solution {
public:
    ListNode* deleteDuplicates(ListNode* head) {
        //cur指针是指向head指针,不是创建一条新链表
        //相当于是工作指针,修改head链表
        ListNode *cur=head;
        while(cur->next&&cur->next->next){
            //说明产生重复
            if(cur->val==cur->next->val){
                cur->next=cur->next->next;
            }
            else {
                cur=cur->next;
            }
        }
        return head;
    }
};

Leetcode 082删除排序链表中重复元素II

地址

力扣

描述

思想

代码

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode() : val(0), next(nullptr) {}
 *     ListNode(int x) : val(x), next(nullptr) {}
 *     ListNode(int x, ListNode *next) : val(x), next(next) {}
 * };
 */
class Solution {
public:
    ListNode* deleteDuplicates(ListNode* head) {
        ListNode *dummy=new ListNode(-1);
        dummy->next=head;
        //p指针指向一段字符的前一个位置
        ListNode *p=dummy;
        //假如p后面有下一段
        while(p->next){
            //看下一段的第二个数
            ListNode *q=p->next->next;
            //假如q非空,且第二个数与第一个数相同,说明重复
            while(q&&q->val==p->next->val) q=q->next;
            //说明p指针没有动,说明没有重复
            if(p->next->next==q) p=p->next;
            else p->next=q;
        }
        return dummy->next;
    }
};

Leetcode061(旋转链表)--------快慢指针

描述:

 题解:

Leetcode061(旋转链表)--------快慢指针_Myblog-CSDN博客

Leetcode024两两交换链表中的节点-------(for循环的妙用&&链表接连的顺序)

描述:

 题解:

Leetcode024两两交换链表中的节点-------(for循环的妙用&&链表接连的顺序)_Myblog-CSDN博客

Leetcode206(翻转整段单链表)--------迭代法运用

描述:

 题解:

Leetcode206(翻转整段链表)--------迭代法运用_Myblog-CSDN博客

Leetcode092(规定左右边界翻转区域内的链表)------迭代法

描述:

本题是在206题的基础上增加了需要反转的左右边界

题解: 

Leetcode092(规定左右边界翻转区域内的链表)------迭代法_Myblog-CSDN博客

Leetcode106(相交链表)--------我走过你来时的路&&注意不要陷入死循环

描述:

 

题解:

Leetcode106(相交链表)--------我走过你来时的路&&注意不要陷入死循环_Myblog-CSDN博客

Leetcode141、142(环形链表)--------快慢指针判断有没有环

描述:

 题解:

Leetcode141、142(环形链表)--------快慢指针判断有没有环_Myblog-CSDN博客

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值