小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

【LeetCode練習(xí)題】Reverse Linked List II

 雪柳花明 2016-09-28

Reverse Linked List II

Reverse a linked list from position m to n. Do it in-place and in one-pass.

For example:
Given 1->2->3->4->5->NULLm = 2 and n = 4,

return 1->4->3->2->5->NULL.

Note:
Given mn satisfy the following condition:
1 ≤ m ≤ n ≤ length of list.

 

題目意思:

翻轉(zhuǎn)給定區(qū)間[m,n]的鏈表。

第一個(gè)節(jié)點(diǎn)m=1。  

1<=m<=n<=length。

 

解題思路:

就我目前學(xué)習(xí)到的,有用指向指針的指針的,有插入,有逆轉(zhuǎn)的。但是所有方法的核心,都其實(shí)是一個(gè)算法,就是利用3個(gè)指針修改區(qū)間內(nèi)的節(jié)點(diǎn)的next值,且要保證已修改的鏈表是可以被找到的,即可以連入原鏈表中。

假設(shè)有一個(gè)鏈表有1,2,3,4,5,6,6個(gè)節(jié)點(diǎn)。m=2,n=5。

我們添加一個(gè)dummy節(jié)點(diǎn),方便操作第一個(gè)節(jié)點(diǎn)。

首先讓pre指向第m個(gè)節(jié)點(diǎn)前面那個(gè),cur指向第m個(gè)節(jié)點(diǎn),p1指向m的下一個(gè)節(jié)點(diǎn),因?yàn)閜1有可能是NULL,所以當(dāng)p1不是NULL的時(shí)候,p2指向p1的下一個(gè)節(jié)點(diǎn)。

上圖畫(huà)出了這幾個(gè)指針指向情況的開(kāi)始狀態(tài)和我們希望的終止?fàn)顟B(tài)。

在最終狀態(tài)下,再通過(guò)其中方框中的兩步就可以我們需要的鏈表了。

 

而cur,p1,p2三個(gè)指針在區(qū)間內(nèi)向前移動(dòng)并且將p1的next指向cur的過(guò)程則包含在一個(gè)for循環(huán)內(nèi)部。如下:

 

代碼如下:

復(fù)制代碼
 1 class Solution {
 2 public:
 3     ListNode *reverseBetween(ListNode *head, int m, int n) {
 4         ListNode *dummy = new ListNode(0);
 5         dummy->next = head;
 6 
 7         ListNode *pre = dummy, *cur = head;
 8         for(int i = 1; i < m; i++){
 9             pre = cur;
10             cur = cur->next;
11         }
12 
13         ListNode *p1,*p2;
14         if(cur)
15             p1 = cur->next;
16         if(p1)
17             p2 = p1->next;
18         for(int j = m; j < n; j++){
19             p1->next = cur;
20             cur = p1;
21             p1 = p2;
22             if(p2) p2 = p2->next;
23         }
24         pre->next->next = p1;
25         pre->next = cur;
26 
27         return dummy->next;
28     }
29 };
復(fù)制代碼

 

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多