1. 程式人生 > >【原創】Leetcode -- Reverse Linked List II -- 程式碼隨筆(備忘)

【原創】Leetcode -- Reverse Linked List II -- 程式碼隨筆(備忘)

題目:Reverse Linked List II

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

下面這段程式碼,有兩個地方,一個是4、5行的dummy節點設定;另一個是11-14行,區域性視覺化到全域性。

 1  ListNode *reverseBetween(ListNode *head, int m, int n) {
 2     if(m == n) return head;
 3     n -= m;
 4     ListNode prehead(0);
 
5 prehead.next = head; 6 ListNode* pre = &prehead; 7 while(--m) pre = pre->next; 8 ListNode* pstart = pre->next; 9 while(n--) 10 { 11 ListNode *p = pstart->next; 12 pstart->next = p->next; 13 p->next = pre->next;
14 pre->next = p; 15 } 16 return prehead.next; 17 }

對於我,想記錄的是第二點。

區域性視覺化到全域性的意思是每一次區域性指標調整要完成一個完整的連結串列轉換。也就是說不應該根據全域性來考慮單步情況,而是單步情況就完成一個全域性的實現。

即: 1-2-3-4-5, m=2, n=4,  全域性思想是 把2-4進行轉換,再拼接到1-5中。區域性思想是每一個單步都完成全域性變化,不考慮n是多少。比如第一步在2處, 轉換為1-3-2-4-5。

這裡有兩個好處,1:程式碼簡潔,前中後三個指標可完成所有的交換。2:需要考慮的情況少,不用像全域性思路分兩步執行。3:可遞迴的執行。

相關推薦

原創Leetcode -- Reverse Linked List II -- 程式碼隨筆

題目:Reverse Linked List II 題意:Reverse a linked list from position m to n. Do it in-place and in one-pass. 下面這段程式碼,有兩個地方,一個是4、5行的dummy節點設定;另一個是11-14行,區域性視覺

LeetCode92. Reverse Linked List IIC++

地址:https://leetcode.com/problems/reverse-linked-list-ii/ 題目: Reverse a linked list from position m to n. Do it in one-pass. Note: 1 ≤ m ≤ n

[leetcode] Reverse Linked List II

reverse 鏈表 csdn lac 這一 self. spa ive do it 題目內容 Reverse a linked list from position m to n. Do it in-place and in one-pass. For example

[LeetCode] 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->NULL, m = 2 and n = 4, retu

python3leetcode 817. Linked List Components Medium

 817. Linked List Components (Medium) We are given head, the head node of a linked list containing unique integer values.

python3leetcode 141. Linked List Cycle easy

141. Linked List Cycle (easy)  Given a linked list, determine if it has a cycle in it. To represent a cycle in the given linked list,

原創《黑客帝國》劇情詳細解析未完

本文是對整個《黑客帝國》劇情的完整分析和介紹,希望廣大黑客帝國迷能夠喜歡。由於本人能力有限加上黑客帝國的情節過於複雜,文中分析如有錯誤的地方歡迎大家指出,如有不完整的地方也希望大家補充。本文參考以下資料:《黑客帝國》動畫版(Animatrix),《黑客帝國》1、2、3一、二次

原創WPF TreeView帶連線線樣式的優化WinFrom風格

一、前言   之前查詢WPF相關資料的時候,發現國外網站有一個TreeView控制元件的樣式,是WinFrom風格的,樣式如下,文章連結:https://www.codeproject.com/tips/673071/wpf-treeview-with-winforms-style-fomat 

leetcode92.MediumReverse Linked List II

解題思路: 這道題的意思是,有一串連結串列,將第m位到第n位翻轉過來,比如對於連結串列1-2-3-4-5,翻轉第2到第4位後就是1-4-3-2-5 題目要求只遍歷一遍連結串列 我的想法是將翻轉的部分用棧存起來,然後重新新建結點 general的做法是直接修改原連結串列的結點指向關係,比如

92. Reverse Linked List IIMedium

gin ply com medium ext prev spa pass using 92. Reverse Linked List II【Medium】 Reverse a linked list from position m to n. Do it in-place

92. 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->NULL

[LeetCode] 92. Reverse Linked List II Java

nbsp con pre -s efi 題意 star 時有 in-place 題目: Reverse a linked list from position m to n. Do it in-place and in one-pass. For example:Given

Leetcode 92. Reverse Linked List II

logs sta urn -a 添加 http problems nbsp return 思路:添加頭節點,反轉鏈表某個連續部分,206. Reverse Linked List是本題的特殊情況,也可以像本題一樣做,具體見Leetcode 206. Reverse Lin

LeetCode 92. 反轉連結串列 II(Reverse Linked List II)

題目描述 反轉從位置 m 到 n 的連結串列。請使用一趟掃描完成反轉。 說明: 1 ≤ m ≤ n ≤ 連結串列長度。 示例: 輸入: 1->2->3->4->5->NULL, m = 2, n = 4 輸出: 1->4->3

[Leetcode] 92. Reverse Linked List II

/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {}

LeetCode-92. Reverse Linked List II附思考過程和debug過程

https://leetcode.com/problems/reverse-linked-list-ii/題意比較簡單,要求在一輪遍歷中將第m個節點到第n個節點逆轉,其他節點保持不變,核心程式碼與https://leetcode.com/problems/reverse-linked-list/有所

LeetCode刷題_92. Reverse Linked List II

原題連結: https://leetcode.com/problems/reverse-linked-list-ii/description/ Reverse a linked list from position m to n. Do it in one-pass. Note:

Leetcode 92. Reverse Linked List II 翻轉部分連結串列

解決思路: 注意的要點是:m 可能位於頭結點,所以這裡臨時建立一個節點,每次將cur後面的節點放到pre節點後邊,這裡的cur->next 其實是在一直變化的,所以這裡cur並不用自己更新,每次進行重連結時相當於對連結串列進行了遍歷。 /** * Def

Reverse Linked List II -- LeetCode

                原題連結: http://oj.leetcode.com/problems/reverse-linked-list-ii/這道題是比較常見的連結串列反轉操作,不過不是反轉整個連結串列,而是從m到n的一部分。分為兩個步驟,第一步是找到m結點所在位置,第二步就是進行反轉直到n結點。

leetcode.92. Reverse Linked List II

/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * };1. 。*/struct ListNode* reverseBetween(struct Lis