Reverse Nodes in k-Group 链表

原创 2015年07月07日 11:06:59

思路:
链表操作。

从头结点开始,每隔k个节点reverse一次,如果不足k个节点,返回。

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
private:
    ListNode *reverse(ListNode *prev, ListNode *begin, ListNode *end) {

        ListNode *end_next = end->next;

        for(ListNode *p = begin, *cur = p->next, *next = cur->next; cur != end_next; p = cur, cur = next, next = next ? next->next : nullptr) {
            cur->next = p;
        }

        begin->next = end_next;
        prev->next = end;
        return begin;
    }

public:
    ListNode* reverseKGroup(ListNode* head, int k) {

        if(head == nullptr || head->next == nullptr || k < 2) return head;

        ListNode dummy(-1);
        dummy.next = head;

        for(ListNode *prev = &dummy, *end = head; end; end = prev->next) {
            for(int i = 1; i < k && end; ++i) {
                end = end->next;
            }
            if(end == nullptr) break;
            prev = reverse(prev, prev->next, end);
        }

        return dummy.next;
    }
};

相关文章推荐

LeetCode (25) Reverse Nodes in k-Group (链表)

题目描述Given a linked list, reverse the nodes of a linked list k at a time and return its modified list...

LeetCode 25. Reverse Nodes in k-Group(反转链表)

原题网址:https://leetcode.com/problems/reverse-nodes-in-k-group/ Given a linked list, reverse the node...
  • jmspan
  • jmspan
  • 2016年05月20日 10:35
  • 347

25. Reverse Nodes in k-Group 怎样不使用额外空间翻转一个单向链表?

Given a linked list, reverse the nodes of a linked list k at a time and return its modified list. ...

leetcode 25. Reverse Nodes in k-Group——很值得一看的链表题

//Given a linked list, reverse the nodes of a linked list k at a time and return its modified list. ...

Leetcode #25 Reverse Nodes in k-Group K区间链表交换 解题报告

1 解题思想昨天在写组内交换的时候我就说了,肯定有K组版的,结果就是今天啊。。嗯,因为我写的和做的不同步,所以已经不记得题目顺序了。那么在看今天的之前,可以先去回顾下昨天的,今天的是昨天的推广版,昨天...
  • MebiuW
  • MebiuW
  • 2016年03月27日 22:07
  • 389

leetcode:Reverse Nodes in k-Group(以k为循环节反转链表)【面试算法题】

题目: Given a linked list, reverse the nodes of a linked list k at a time and return its modified li...

[leetcode]Reverse Nodes in k-Group 反转以k个节点为一组的链表

Given a linked list, reverse the nodes of a linked list k at a time and return its modified list. ...
  • jhbxlx
  • jhbxlx
  • 2014年08月04日 07:22
  • 584

LeetCode 25 Reverse Nodes in k-Group(在K组链表中反转结点)(Linked List)(*)

原文给定一个链表,在一定时间内反转这个链表的结点,并返回修改后的链表。如果结点数不是K的倍数,那么剩余的结点就保持原样。你不应该在结点上修改它的值,只有结点自身可以修改。只允许使用常量空间。例如给定链...
  • NoMasp
  • NoMasp
  • 2015年11月13日 11:11
  • 2317

leetCode 25.Reverse Nodes in k-Group (以k个节点为一组反转链表) 解题思路和方法

Reverse Nodes in k-Group  Given a linked list, reverse the nodes of a linked list k at a time and re...

25. Reverse Nodes in k-Group

Given a linked list, reverse the nodes of a linked list k at a time and return its modified list. I...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Reverse Nodes in k-Group 链表
举报原因:
原因补充:

(最多只允许输入30个字)