圖解LeetCode刷題計劃
1、寫在前面
手繪漫畫系列正式上線!!!“圖解LeetCode刷題計劃” 來了!!!
今天是第二十期,爭取每天一期,最多兩天一期,歡迎大家監督我。。。
2、題目
首先看一下題目,
【手繪漫畫】面試必考之圖解逆轉單鏈表/單鏈表逆序
這裏要先確定一個問題,依舊還是逆轉鏈表, 不過是指定範圍的逆轉!
3、正文
一起來看:
思路如下,先逆轉 m
和 n
之間的鏈表,然後再逆轉兩個節點的部分。
具體如下:
逆轉部分,就是之前講過的反轉鏈表。
最後指定 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~