Reverse Nodes in k-Group

来源:互联网 发布:安装包制作工具 知乎 编辑:程序博客网 时间:2024/04/26 04:20

Q:

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


Solution:

/** * Definition for singly-linked list. * public class ListNode { *     int val; *     ListNode next; *     ListNode(int x) { *         val = x; *         next = null; *     } * } */public class Solution {    public ListNode reverseKGroup(ListNode head, int k) {        if (head == null || head.next == null || k == 1)            return head;        ListNode cur = head;        int n = 0;        while (cur != null) {            cur = cur.next;            n++;        }        int group = n / k;        if (group == 0) return head;        cur = head.next;        ListNode prev = head;        prev.next = null;        ListNode newTail = null;        ListNode lastTail = prev;        for (int i = 1; i < k; i++) {            // this should not happen            if (cur == null) break;            ListNode temp = cur.next;            cur.next = prev;            prev = cur;            cur = temp;        }        ListNode retHead = prev;        lastTail.next = cur;        for (int i = 1; i < group; i++) {            newTail = cur;            prev = cur;            cur = cur.next;            prev.next = null;            for (int j = 1; j < k; j++) {                // this should not happen                if (cur == null) break;                ListNode temp = cur.next;                cur.next = prev;                prev = cur;                cur = temp;            }            lastTail.next = prev;            lastTail = newTail;        }        lastTail.next = cur;        return retHead;    }}


0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 墙上乳胶漆用水擦完太亮了怎么办 外墙腻子不好打磨怎么办 腻子打磨的灰尘怎么办 家里的壁纸脏了怎么办 家装用冷风管冬天取暖怎么办? 房子装修冷色系怎么办 高血压突然变低血压怎么办 玩单机游戏卡顿怎么办 老人血压太低怎么办 老年人血压太低怎么办 觉总是不够睡怎么办 老年人气不够用怎么办 卧室晒不到太阳怎么办 农村房子墙角受潮怎么办 房间里面有虫子怎么办 墙壁发霉生虫子怎么办 墙壁发霉有虫子怎么办 墙面发霉有虫子怎么办 白漆墙面脏了怎么办 房间贴完墙墙面发霉怎么办? 家里的墙壁发霉怎么办 黑豆生虫了怎么办 家具有小虫子怎么办 店铺对面有镜子怎么办 房间里有蛆虫怎么办 房间里有虫子怎么办 小宝宝发烧了怎么办啊 小孩不盖被子怎么办 孩子不爱盖被子怎么办 宝宝不喜欢盖被子怎么办 被单上染上颜色怎么办 白漆不够白怎么办 衣柜推拉门门缝宽怎么办 推拉门时声音大怎么办 电子门坏掉了怎么办 厨柜门坏掉了怎么办 乳胶漆刷花了怎么办 淋浴房靠窗户怎么办 墙漆滴在地板上怎么办 墙漆掉在地板上怎么办 孩子练字不认真怎么办