反轉鏈表 Reverse Linked List II
阿新 • • 發佈:2018-09-12
圖片 描述 經典的 new 完全 節點 每次 ever link
2018-09-11 22:58:29
問題描述:
問題求解:
反轉鏈表一直是一個很經典的問題,本題中其實是最經典的全局反轉的一個改進和加深,本題的求解思路完全可以套用到全局反轉中。
本題實際使用的思路是一種插入的思路,維護了三個指針prev,cur,then。
prev : 初始位置的前一個位置,始終不變,後續就是在prev後進行插入;
cur : 不斷叠代,指向需要插入的節點的前一個位置;
then : cur的下一個節點,是每次需要進行插入的節點,同時需要不斷叠代。
public ListNode reverseBetween(ListNode head, int m, int n) { ListNode dummy = new ListNode(-1); dummy.next = head; ListNode prev = dummy; ListNode cur = dummy; ListNode then = null; for (int i = 0; i < m; i++) { prev = cur; cur = cur.next; then = cur.next; } for (int i = 0; i < n - m; i++) { cur.next = then.next; then.next = prev.next; prev.next = then; then = cur.next; } return dummy.next; }
反轉鏈表 Reverse Linked List II