首页 > 其他 > 详细

Reverse Nodes in k-Group

时间:2015-09-01 16:32:02      阅读:201      评论:0      收藏:0      [点我收藏+]

又是一道链表的题,关于链表的题好像都是关于指针的,题目都不难吧,主要是需要细心,因为不难,所以代码没有自己写,这里还可以考虑之前做过的链表翻转m至n那道题,然后调用函数就解决了······················

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
public:
    ListNode* reverse(ListNode* head){
        ListNode* prev = nullptr;
        ListNode* nowNode = head;
        while(nowNode){
            ListNode* next = nowNode -> next;
            nowNode -> next =  prev;
            prev = nowNode;
            nowNode = next;
        }
        return prev;
    }
    ListNode *reverseKGroup(ListNode *head, int k) {
        if(head == nullptr || head -> next == nullptr || k < 2) return head;
        
        int cnt = 1;
        ListNode* nowHead = head;
        ListNode* nowNode = head;
        while(nowNode && cnt < k){
            cnt ++;
            nowNode = nowNode -> next;
        }
        if(nowNode && cnt == k){
            ListNode* tail = reverseKGroup(nowNode -> next , k);
            nowNode -> next = nullptr;
            head = reverse(head);
            nowHead -> next = tail;
        }
        return head;
    }
};

  

Reverse Nodes in k-Group

原文:http://www.cnblogs.com/qiaozhoulin/p/4775903.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!