leetcode 日经贴,Cpp code -Reverse Nodes in k-Group

来源:互联网 发布:安卓免费网络加速器 编辑:程序博客网 时间:2024/06/08 00:01

Reverse Nodes in k-Group

/** * Definition for singly-linked list. * struct ListNode { *     int val; *     ListNode *next; *     ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public:    ListNode* reverseKGroup(ListNode* head, int k) {        ListNode *h = NULL, *pre = NULL;        if (!head || !head->next || k <= 1) {            return head;        }        while (head) {            int tk = k - 1;            ListNode *tail = head;            while (tk && tail) {                tail = tail->next;                --tk;            }            if (!tail) {                if (pre) {                    pre->next = head;                } else {                    h = pre = head;                }                head = NULL;            } else {                ListNode *next = tail->next;                ListNode *p = head->next;                head->next = NULL;                tail = head;                while (p != next) {                    ListNode *temp = p->next;                    p->next = head;                    head = p;                    p = temp;                }                if (!h) {                    h = head;                } else {                    pre->next = head;                }                pre = tail;                head = next;            }        }        return h;    }};


0 0
原创粉丝点击