博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Reverse Nodes in k-Group
阅读量:6277 次
发布时间:2019-06-22

本文共 2707 字,大约阅读时间需要 9 分钟。

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

其中,创建了一个dump充当头结点,使得操作统一。使用pre来记录要逆转的序列的前面一个结点,而q记录要逆转序列之后的一个结点,每次逆转返回逆转之后的最后一个元素,也就是下一次逆转的前驱。

 

C++代码实现:

#include
#include
#include
#include
using namespace std;//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) return head; int len=0; ListNode *p=head; ListNode *q=NULL; ListNode *pre=NULL; while(p) { len++; p=p->next; } ListNode *dump=new ListNode(0); dump->next=head; pre=dump; p=head; int count=0; while(p) { count++; q=p->next; while(count==k) { pre=reverse(pre,q); count=0; } p=q; } return dump->next; } ListNode *reverse(ListNode *pre,ListNode *q) { if(pre->next==NULL) return NULL; if(pre->next->next==NULL) return pre->next; ListNode *p=pre->next; ListNode *pp=NULL; ListNode *temp=NULL; pp=p->next; p->next=NULL; while(pp!=q) { temp=pp; pp=pp->next; temp->next=NULL; temp->next=pre->next; pre->next=temp; } p->next=q; pre=p; return pre; } void createList(ListNode *&head) { ListNode *p=NULL; int i=0; int arr[10]= {
9,8,7,6,5,4,3,2,1,0}; for(i=0; i<10; i++) { if(head==NULL) { head=new ListNode(arr[i]); if(head==NULL) return; } else { p=new ListNode(arr[i]); p->next=head; head=p; } } }};int main(){ Solution s; ListNode *L=NULL; s.createList(L); ListNode *head=L; while(head) { cout<
val<<" "; head=head->next; } cout<
val<<" "; head=head->next; } cout<

运行结果:

转载地址:http://ciyva.baihongyu.com/

你可能感兴趣的文章
java 内存泄漏和内存溢出
查看>>
visual studio code 在 mac 下按 F12无效
查看>>
C#与C++的发展历程第四 - C#6的新时代
查看>>
清空nohup日志
查看>>
日语输入中的促音怎么输入
查看>>
:: My Life Organized :: Downloads
查看>>
小工具:ssh-copy-id_老王的技术手册 ( 我的新博客:http://huoding.com )_百度空间
查看>>
[NET]Net中的反射使用入门(根据类名和函数名,生成和调用对象的成员函数) (转)...
查看>>
优秀的Web开发人员是这样炼成的 (share)
查看>>
菜菜从零学习WCF八(Message类)
查看>>
【转】集合已修改;可能无法执行枚举操作
查看>>
mysql 慢查询日志记录
查看>>
在执行xp_cmdshell的过程中出错,调用'LogonUserW'失败,错误代码:'1909'
查看>>
[转].NET设计模式系列文章
查看>>
java编程常用技术
查看>>
Unity 由Verlet数值积分产生的头发运动
查看>>
restController与Controller-待续
查看>>
PropertyPlaceholderConfigurer的用法(使用spring提供的类读取数据库配置信息.properties)...
查看>>
J2EE--Servlet生命周期与原理
查看>>
IT高管和易筋经的故事
查看>>