[leetcode] 【链表】25. Reverse Nodes in k-Group

原创 2016年06月02日 00:31:21

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

If the number of nodes is not a multiple of k then left-out nodes in the end should remain as it is.

You may not alter the values in the nodes, only nodes itself may be changed.

Only constant memory is allowed.

For example,
Given this linked list: 1->2->3->4->5

For k = 2, you should return: 2->1->4->3->5

For k = 3, you should return: 3->2->1->4->5


题意

一个链表,每k个节点为一部分,然后这k个节点逆序翻转,如果最后剩余不足k个节点,那么保持原来的顺序,

Given this linked list: 1->2->3->4->5

For k = 2, you should return: 2->1->4->3->5

For k = 3, you should return: 3->2->1->4->5


题解

从头开始遍历,每到k个便翻转,不够k个就跳出。
翻转方法参考92题
http://blog.csdn.net/u014654002/article/details/51538495

/**
 * 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) {
        if(head==NULL||head->next==NULL||k<2) return head;
        ListNode newhead(-1);
        newhead.next=head;
        for(ListNode *prev=&newhead,*end=head;end;end=prev->next)
        {
            for(int i=1;i<k&&end;i++)
                end=end->next;
            if(end==NULL) break;
            prev=reverse(prev,prev->next,end);
        }
        return newhead.next;
    }
    ListNode* reverse(ListNode *prev,ListNode *begin,ListNode *end)
    {
        ListNode* temp=end->next;
        for(ListNode *p=begin,*cur=p->next,*next=cur->next;cur!=temp;
        p=cur,cur=next,next=next? next->next:NULL)
            cur->next=p;
        begin->next=temp;
        prev->next=end;
        return begin;
    }
};




版权声明:本文为博主原创文章,未经博主允许不得转载。

(Java)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. ...
  • u012848330
  • u012848330
  • 2016年06月02日 22:06
  • 509

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. I...
  • sunao2002002
  • sunao2002002
  • 2015年06月08日 20:00
  • 3674

Reverse Nodes in k-Group -- LeetCode

原题链接: http://oj.leetcode.com/problems/reverse-nodes-in-k-group/  这道题是Swap Nodes in Pairs的扩展,Swap N...
  • linhuanmars
  • linhuanmars
  • 2014年02月26日 06:27
  • 11216

[LeetCode] 025. Reverse Nodes in k-Group (Hard) (C++/Java)

[LeetCode] 025. Reverse Nodes in k-Group (Hard) (C++/Java)
  • hcbbt
  • hcbbt
  • 2015年03月05日 15:04
  • 2749

python写算法题:leetcode: 25. Reverse Nodes in k-Group

https://leetcode.com/problems/reverse-nodes-in-k-group/#/description class Solution(object): ...
  • lzf_china
  • lzf_china
  • 2017年06月29日 21:29
  • 86

【Leetcode】【python】Reverse Nodes in k-Group

题目大意将一个链表中每k个数进行翻转,末尾不足k个的数不做变化。解题思路参考: https://shenjie1993.gitbooks.io/leetcode-python/025%20Rever...
  • qqxx6661
  • qqxx6661
  • 2017年09月05日 09:00
  • 112

leetcode 25 -- Reverse Nodes in k-Group

Reverse Nodes in k-Group 题目: Given a linked list, reverse the nodes of a linked list k at a tim...
  • wwh578867817
  • wwh578867817
  • 2015年06月10日 17:06
  • 946

[LeetCode]Reverse Nodes in k-Group, 解题报告

前言 今天收到了阿里的电子入职offer,看岗位的要求是要熟悉linux内核,迅速入手了一本《Linux内核设计与实现》,入职前希望能翻完一遍,在亚马逊货到付款下周二才能送到,这两天还是按部就班的写...
  • zinss26914
  • zinss26914
  • 2014年02月08日 15:51
  • 1712

[leetcode] 25. Reverse Nodes in k-Group 解题报告

题目链接:https://leetcode.com/problems/reverse-nodes-in-k-group/ Given a linked list, reverse the node...
  • qq508618087
  • qq508618087
  • 2016年01月08日 10:51
  • 434

LeetCode解题报告--Reverse Nodes in k-Group

题目 Given a linked list, reverse the nodes of a linked list k at a time and return its modified li...
  • github_27609763
  • github_27609763
  • 2015年10月17日 23:48
  • 575
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:[leetcode] 【链表】25. Reverse Nodes in k-Group
举报原因:
原因补充:

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