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

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

Problem Description:

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个元素进栈出栈实现逆置,详细实现时先统计出链表的总元素个数,提前算出须要逆置的组数,代码例如以下:

/** * 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 *p=head,*newh=NULL,*pre; 		stack
stk; int len=0,i=1,cnt,n; while(p) { len++; p=p->next; } if(k>len||k<=1) return head; n=len/k; p=head; while(i<=n) { cnt=0; while(cnt
next; cnt++; } while(!stk.empty()) { if(!newh) { newh=stk.top(); pre=newh; stk.pop(); } else { pre->next=stk.top(); pre=pre->next; stk.pop(); } } i++; } pre->next=p; return newh; }};

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

你可能感兴趣的文章
OpenGL ES 入门之旅 -- GLSL初识着色器语言
查看>>
实验四
查看>>
35. 搜索插入位置
查看>>
ab压测札记(Apache Bench)
查看>>
Mybatis怎么能看是否执行了sql语句
查看>>
GC算法 垃圾收集器
查看>>
21.自定义服务
查看>>
Android SAX、DOM、Pull解析xml文件剖析与案例讲解
查看>>
1138: 零起点学算法45——求最大值
查看>>
bzoj1711[USACO07OPEN]吃饭Dining
查看>>
查找 oracle 数据库中包含某一字段的所有表的表名
查看>>
python+selenium之测试报告自动化测试实例
查看>>
根据select中选定option触发不同事件
查看>>
大数据系统介绍
查看>>
《大话设计模式》读书笔记-第6章 装饰模式
查看>>
java的日期时间处理(待更新)
查看>>
语音处理
查看>>
Sonar
查看>>
django之分页器
查看>>
第二阶段冲刺4
查看>>