反轉鏈表二代目!【手繪漫畫】圖解LeetCode之反轉鏈表 II(LeetCode 92)

在這裏插入圖片描述

圖解LeetCode刷題計劃

1、寫在前面

手繪漫畫系列正式上線!!!“圖解LeetCode刷題計劃” 來了!!!

今天是第二十期,爭取每天一期,最多兩天一期,歡迎大家監督我。。。
在這裏插入圖片描述

在這裏插入圖片描述
在這裏插入圖片描述

2、題目

首先看一下題目,
在這裏插入圖片描述
【手繪漫畫】面試必考之圖解逆轉單鏈表/單鏈表逆序

這裏要先確定一個問題,依舊還是逆轉鏈表, 不過是指定範圍的逆轉!
在這裏插入圖片描述

3、正文

一起來看:

思路如下,先逆轉 mn 之間的鏈表,然後再逆轉兩個節點的部分。

具體如下:
在這裏插入圖片描述
逆轉部分,就是之前講過的反轉鏈表。
在這裏插入圖片描述
最後指定 a->next=d;b->next=c; 完事!
在這裏插入圖片描述
在這裏插入圖片描述

4、代碼

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
public:
    ListNode* reverseBetween(ListNode* head, int m, int n) {
        if(m==n) return head;
        auto dummy=new ListNode(-1);
        dummy->next=head;
        auto a=dummy,d=dummy;
        for(int i=0;i<m-1;i++) a=a->next;
        for(int i=0;i<n;i++) d=d->next;
        auto b=a->next,c=d->next;
        for(auto p=b,q=p->next;q!=c;){
            auto o=q->next;
            q->next=p;
            p=q;q=o;
        }
        a->next=d;
        b->next=c;
        return dummy->next;
    }
};

在這裏插入圖片描述
在這裏插入圖片描述

如果有幸幫到你,請幫我點個【贊】,給個【關注】!如果能順帶【評論】給個鼓勵,我將不勝感激。

如果想要更多的資源,歡迎關注 @我是管小亮,文字強迫症MAX~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章