【Leetcode】之Reverse Nodes in k-Group

原创 2015年11月18日 10:28:44

一.问题描述

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个节点为一个单位,进行reverse求解。测试通过的程序如下:
/**
 * 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* curr,* next,* tmp;
            ListNode* st,* end;
            int cnt=0;
            curr=head;
            if(curr==NULL) return NULL; 
            while(curr!=NULL){
                cnt++;
                if(cnt==k)
                    break;
                curr=curr->next;
            }   //judge if there exists k nodes
            if(cnt==k){ //if exists
               st=head;cnt=1;end=head;
                while(cnt<k){
                    next=end->next;
                    tmp=next->next;
                    next->next=st;
                    end->next=tmp;
                    st=next;
                    cnt++;
                }
                if(end->next==NULL)
                    return st;
                end->next=reverseKGroup(end->next,k);
                return st;
            }
            
            return head;
                
            
            
            
            
            
    }
};



[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
  • 636

算法分析与设计课程(7):【leetcode】Reverse Nodes in k-Group

Description: Given a linked list, reverse the nodes of a linked list k at a time and return its...
  • lr787558718
  • lr787558718
  • 2017年04月07日 14:57
  • 75

每日算法之二十三: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. ...
  • yapian8
  • yapian8
  • 2014年05月31日 11:18
  • 693

算法设计与分析(18)-- Reverse Nodes in k-Group(难度:Hard)

Reverse Nodes in k-Group
  • alexlau8
  • alexlau8
  • 2017年06月22日 21:09
  • 90

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...
  • zhang9801050
  • zhang9801050
  • 2013年12月02日 23:08
  • 1793

Leetcode上的各种“Reverse”

A. 单链表整体的逆转题目链接:https://leetcode.com/problems/reverse-linked-list/其实做法挺简单的,就是将每个节点的next指针指向原来链表中的上一个...
  • Jacketinsysu
  • Jacketinsysu
  • 2016年03月03日 23:10
  • 323

《LeetBook》leetcode题解(7): Reverse Integer[E]——处理溢出的技巧

007. Reverse Integer[E]——处理溢出的技巧 Reverse IntegerE处理溢出的技巧 题目 思路 思路1用long 思路2变化前后对比 思路3提前停止操作 题目Revers...
  • hk2291976
  • hk2291976
  • 2016年04月10日 10:59
  • 676

C实现 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 list. ...
  • liutianshx2012
  • liutianshx2012
  • 2015年06月22日 11:24
  • 416

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. ...
  • djgjmtdmjt
  • djgjmtdmjt
  • 2017年01月05日 12:20
  • 153

关于LeetCode中Reverse Integer一题的理解

题目如下: Reverse digits of an integer. Example1: x = 123, return 321 Example2: x = -123, return -321...
  • zsy112371
  • zsy112371
  • 2016年08月27日 16:46
  • 259
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【Leetcode】之Reverse Nodes in k-Group
举报原因:
原因补充:

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