文档章节

25. Reverse Nodes in k-Group

datacube
 datacube
发布于 2016/06/30 18:21
字数 263
阅读 10
收藏 0
/**
 *
 * 1 转化为两两合并
 */
public class ReverseKGroup {

    public static void main(String[] args) {
        ListNode l1 = new ListNode(1);
        ListNode n1 = new ListNode(3);
        ListNode n2 = new ListNode(4);
        ListNode n3 = new ListNode(5);

        l1.next = n1;
        n1.next = n2;
        n2.next = n3;

        ReverseKGroup mt = new ReverseKGroup();
        ListNode head = mt.reverseKGroup(l1,2);
        Utils.print(head);
    }


    public ListNode reverseKGroup(ListNode head, int k) {
        if (k == 1 || head == null || head.next == null)
            return head;
        ListNode preHead = new ListNode(-1);
        preHead.next = head;
        ListNode first = head, last = head;
        ListNode preGroup = preHead, nextGroup = preHead;
        int count = 1;
        while (last != null) {
            if (count == k) {          //当满足k个组合时进行翻转
                nextGroup = last.next; //下一个组合的首节点
                reverseList(first, last);
                preGroup.next = last;  //翻转之后last已经是首节点
                preGroup = first;      //preGroup设置自己为最末,此后first继续下一个组合,采用preGroup的深意,是不打扰first继续下一个组合


                first.next = nextGroup;
                first = nextGroup;
                last = nextGroup;
                count = 1;
                continue;
            }
            last = last.next;
            count++;
        }
        return preHead.next;
    }

    private void reverseList(ListNode head, ListNode tail) {
        ListNode pre = new ListNode(-1), node = head;
        pre.next = head;
        while (pre != tail) {
            ListNode temp = node.next;
            node.next = pre;
            pre = node;
            node = temp;
        }
    }


}

© 著作权归作者所有

上一篇: 翻转链表
datacube
粉丝 9
博文 607
码字总数 152394
作品 0
海淀
程序员
私信 提问
Leetcode 25. Reverse Nodes in k-Group

文章作者:Tyan 博客:noahsnail.com | CSDN | 简书 1. Description 2. Solution Version 1 Version 2 Reference https://leetcode.com/problems/reverse-nodes-in-k-group/description/......

SnailTyan
2018/09/28
0
0
leetcode 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. If the number of nodes is not a multiple of k then left-out nodes in the end sh......

刘小米
2015/02/02
726
0
LeetCode:Reverse Nodes in k-Group - 分组翻转链表

1、题目名称 Reverse Nodes in k-Group(分组翻转链表) 2、题目地址 https://leetcode.com/problems/reverse-nodes-in-k-group 3、题目内容 英文: Given a linked list, reverse the nodes......

北风其凉
2015/08/10
247
0
Reverse Nodes in k-Group

[LeetCode] 025. Reverse Nodes in k-Group (Hard) (C++/Java),有需要的朋友可以参考下。 索引:[LeetCode] Leetcode 题解索引 (C++/Java/Python/Sql) Github: https://github.com/illuz/l......

panpan123_
2017/01/16
0
0
Linked List相关的题

237. Delete Node in a Linked List 这题跟正常的书里的删链表某个节点区别是传入的参数,书里函数输入是要删的那个节点的前一个节点,这题里给的函数输入就是要删的那个节点。 /** Definiti...

wcybrain
2017/10/31
0
0

没有更多内容

加载失败,请刷新页面

加载更多

一个activity中多个handler和消息的处理过程

Ø 能否有多个handler handler的构造方法 public Handler() { …. mLooper = Looper.myLooper(); mQueue = mLooper.mQueue; mCallback = null; … } 因为几乎主要的成员变量都是从Looper中拿......

shzwork
35分钟前
3
0
一起来学Java8(一)——函数式编程

在这篇文章中,我们将了解到在Java8下如何进行函数式编程。 函数式编程 所谓的函数式编程就是把函数名字当做值进行传递,然后接收方拿到这个函数名进行调用。 首先来看下JavaScript如何进行函...

猿敲月下码
55分钟前
4
0
vue 源码 断点调试

本文转载于:专业的前端网站➥vue 源码 断点调试 1、添加sourceMap sourceMap: true 2、npm run dev 会生成vue.js.map 3、断点调试 <!DOCTYPE html><html> <head> <meta cha......

前端老手
今天
4
0
流量运营系统demo1

TopkURLMapper public class TopkURLMapper extends Mapper<LongWritable, Text, Text, FlowBean> {private FlowBean bean = new FlowBean();private Text k = new Text();@Ove......

Garphy
今天
4
0
OSChina 周六乱弹 —— 如果是个帅小伙你愿意和他出去吗

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 小小编辑推荐:《Ghost 》游戏《死亡搁浅》原声 《Ghost 》游戏(《死亡搁浅》原声) - Au/Ra / Alan Walker 手机党少年们想听歌,请使劲儿戳...

小小编辑
今天
441
15

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部