mysql视频 网站favicon图标制作 linux创建文件 golang linq csv memory awk mobile gridview layer callback pagination react router flowjs photoshop cs3 教程 mysql默认密码 short几个字节 oracle查看数据库 cos图像和sin图像 ubuntu显示隐藏文件夹 oracle给表增加字段 python数据类型 python异常 python等待10秒 java中的多态 java重写和重载 java数组 java集合类型 linux磁盘管理 图吧导航怎么样 id解锁大师 考试练习系统 extjs视频教程 8元秒电脑 dnf武极刷图加点 蓝牙测试软件 碧桂园园宝 瑞兹技能 ABViewer
当前位置: 首页 > 学习教程  > 编程语言

leetcode Java二刷:25. K 个一组翻转链表

2021/1/13 19:20:45 文章标签: 测试文章如有侵权请发送至邮箱809451989@qq.com投诉后文章立即删除

题目:25. K 个一组翻转链表 思路: 首先,我们根据k把链表分成,待翻转的链表,待翻转的前驱,待翻转的后继;对需要翻转的部分翻转,然后更新指针,继续上一步,直到…

题目:25. K 个一组翻转链表

思路:

  • 首先,我们根据k把链表分成,待翻转的链表,待翻转的前驱,待翻转的后继;
  • 对需要翻转的部分翻转,然后更新指针,继续上一步,直到全部翻转完成。

翻转一组链表:递归实现。

  • 递归函数返回的是已经翻转完成的链表;
  • 递归函数要做的是把当前的节点head,连接到已经翻转完成的链表尾部;翻转完成后head刚好指向翻转后的尾部节点。
  • 递归函数的返回条件是,节点为空或者节点的下一个为空。

代码:

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode() {}
 *     ListNode(int val) { this.val = val; }
 *     ListNode(int val, ListNode next) { this.val = val; this.next = next; }
 * }
 */
class Solution {
    public ListNode reverseKGroup(ListNode head, int k) {
        ListNode fake = new ListNode(0, head);
        ListNode pre = fake;
        ListNode end = pre;

        while (head != null) {
            for (int i = 0; i < k; i++) {
                end = end.next;
                if (end == null) {
                    return fake.next;
                }
            }

            ListNode nextHead = end.next;
            end.next = null;

            ListNode temp = reverse(head);
            pre.next = temp;

            pre = head;
            end = pre;

            head = nextHead;
            pre.next = head; // 记得链上所有的节点

        }
        return fake.next;
        
    }
    public ListNode reverse(ListNode head) {
        if (head == null || head.next == null) {
            return head;
        }
        ListNode temp = reverse(head.next);
        head.next.next = head;
        head.next = null;
        return temp;
    }
}

本文链接: http://www.dtmao.cc/news_show_600042.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?