LeetCode 25. k個一組翻轉鏈表(Reverse Nodes in k-Group)

來源:互聯網
上載者:User

標籤:turn   額外   new   int   struct   題目   節點   長度   solution   

題目描述

 

給出一個鏈表,每 個節點一組進行翻轉,並返回翻轉後的鏈表。

是一個正整數,它的值小於或等於鏈表的長度。如果節點總數不是 的整數倍,那麼將最後剩餘節點保持原有順序。

樣本 :

給定這個鏈表:1->2->3->4->5

當 = 2 時,應當返回: 2->1->4->3->5

當 = 3 時,應當返回: 3->2->1->4->5

說明 :

  • 你的演算法只能使用常數的額外空間。
  • 你不能只是單純的改變節點內部的值,而是需要實際的進行節點交換。

 

解題思路

 

首先遍曆整個鏈表得到總長度,然後每k個節點依次反轉,每次儲存當前節點反轉後的首節點和尾節點,以便拼接上下k個節點的鏈表;在第一次反轉後記錄新鏈表的首節點;最後節點不足k個時,把上一次反轉後鏈表的尾節點拼接到之後的節點。

 

代碼

 

 1 /** 2  * Definition for singly-linked list. 3  * struct ListNode { 4  *     int val; 5  *     ListNode *next; 6  *     ListNode(int x) : val(x), next(NULL) {} 7  * }; 8  */ 9 class Solution {10 public:11     ListNode* reverseKGroup(ListNode* head, int k) {12         ListNode *left = head, *right = head, *newHead = NULL;13         int len = 0;14         while(right){15             len++;16             right = right->next;17         }18         if(len < k) return head;19         right = head;20         while(len >= k){21             ListNode *node = right;22             ListNode *h = right;23             right = right->next;24             for(int i = 0; i < k-1; i++){25                 ListNode *next = right->next;26                 right->next = node;27                 node = right;28                 right = next;29             }30             if(newHead == NULL) newHead = node;31             else{32                 left->next = node;33                 left = h;34             }35             len -= k;36         }37         left->next = right;38         return newHead;39     }40 };

 

LeetCode 25. k個一組翻轉鏈表(Reverse Nodes in k-Group)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.