Leetcode链表专题

目录

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

地址:

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

题解:

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

描述:

 思想:

 问题

 代码:

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

地址

描述

思想

代码

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

描述:

 题解:

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

描述:

 题解:

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

描述:

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

描述:

题解: 

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

描述:

题解:

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

描述:

 题解:


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

地址:

力扣

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

Leetcode链表专题_第1张图片

题解:

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

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

描述:

Leetcode链表专题_第2张图片

 思想:

Leetcode链表专题_第3张图片

Leetcode链表专题_第4张图片

Leetcode链表专题_第5张图片

Leetcode链表专题_第6张图片

 问题

Leetcode链表专题_第7张图片

 代码:

/**
 * 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

地址

力扣

描述

Leetcode链表专题_第8张图片

思想

Leetcode链表专题_第9张图片

代码

/**
 * 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(旋转链表)--------快慢指针

描述:

Leetcode链表专题_第10张图片

 题解:

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

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

描述:

Leetcode链表专题_第11张图片

 题解:

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

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

描述:

Leetcode链表专题_第12张图片

 题解:

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

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

描述:

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

Leetcode链表专题_第13张图片

题解: 

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

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

描述:

Leetcode链表专题_第14张图片

 Leetcode链表专题_第15张图片

题解:

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

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

描述:

Leetcode链表专题_第16张图片

 题解:

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

你可能感兴趣的:(Leetcode刷题笔记,数据结构,链表,leetcode,算法)