Reverse Nodes in k-Group-LeetCode

来源:互联网 发布:数据统计管理制度pdf 编辑:程序博客网 时间:2024/05/19 12:41

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

k is a positive integer and is less than or equal to the length of the linked 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

题目分析:把上一题的两两倒置,改成了n(n>0)倒置,其他不变。

题目思路:用缓冲区来暂存要倒置的一堆节点的引用,没啥技术含量。引用的理解正确,就不会错。

import java.lang.Math;import java.util.Arrays;class ListNode {int val;ListNode next;ListNode(int x) { val = x; }}public class Solution {    public ListNode reverseKGroup(ListNode head,int k) {    if(k==1)return head;//如果倒置数为1,就是啥都不变,直接返回        ListNode[] circle=new ListNode[k+1];//新建k+1大小的buffer,保存要倒置的节点引用        circle[0]=new ListNode(0);//LeetCode里的链表从第一个节点就是开始保存数据了,所以要新建一个节点来抓住输入链表的头。        circle[0].next=head;        ListNode Pchild=head;        head=circle[0];//把head重定义了,haed不是head了        int i=1;        while(Pchild!=null){//只要还没扫到链表末尾        if(i!=k){        circle[i]=Pchild;//没扫满一组,就把节点引用给buffer        }else{        circle[i]=Pchild.next;//保存下一轮的首个节点        circle[0].next=Pchild;//上一轮最后一个节点的next赋为Pchild        int j=0;        for(j=k-1;j>0;j--){        Pchild.next=circle[j];        Pchild=circle[j];        }//把buffer里的next引用都改过来        circle[j+1].next=circle[k];//最后一个next指向下一组的首个节点        circle[0]=Pchild=circle[j+1];//本组最后一个节点赋给circle[0]和Pchild保证循环正确        i=0;        }        Pchild=Pchild.next;        i++;        }        return head.next;    }}



0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 公章法人章丢失怎么办 广州买房没有社保怎么办 辞职后计生关系怎么办 广州换工作社保怎么办 学校更名了盖章怎么办 工商注册资金没有交怎么办 住公司宿舍怎么办居住证 住在公司宿舍怎么办居住证 滴滴没有的车型怎么办 假的租房合同怎么办 代注册公司被骗怎么办 公司跨区迁址怎么办 公司搬走注册地怎么办 注册公司没有房产证怎么办 公司不运营了怎么办 公司注销了账户怎么办 租户不变更地址怎么办 营业执照忘审了怎么办 工商营业执照年检过期怎么办 个体营业执照没有年报怎么办? 个体工商户一年没有申报怎么办 个体工商户逾期未申报怎么办 个体户没报税过怎么办 农业银行证书过期了怎么办 ca证书丢了怎么办 ca证书被锁怎么办 上个月忘记清卡怎么办 财务人员进入税务黑名单怎么办 社保本丢了怎么办 贷款车辆登记证书怎么办 发票薄丢了怎么办? 汽车发票丢了怎么办 税票弄丢了怎么办 交强险正本丢了怎么办 个体营业执照正本丢失怎么办 简易注销后税务怎么办 拒绝了日历邀请怎么办 老人走丢了怎么办 老人走丢找不到怎么办 没人给介绍对象怎么办 bate365账号被锁怎么办