美文网首页
leetcode025-k个一组翻转链表

leetcode025-k个一组翻转链表

作者: 陆阳226 | 来源:发表于2020-05-07 03:19 被阅读0次

问题描述

给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表。

k 是一个正整数,它的值小于或等于链表的长度。

如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。

示例:

给你这个链表:1->2->3->4->5

当 k = 2 时,应当返回: 2->1->4->3->5

当 k = 3 时,应当返回: 3->2->1->4->5

说明:

  • 你的算法只能使用常数的额外空间。
  • 你不能只是单纯的改变节点内部的值,而是需要实际进行节点交换。

解答

将每k个节点当成一个链表进行翻转,最后不足k个时直接返回

public static ListNode solution(ListNode head, int k) {
    if (head == null || k == 1) {
        return head;
    }
    ListNode dummy = new ListNode(-1);
    dummy.next = head;
    ListNode pre = dummy;
    ListNode tail = dummy;
    while (true) {
        int count = 0;
        // 找到每次翻转的链表的tail
        while (tail != null && count != k) {
            count++;
            tail = tail.next;
        }
        // tail为null说明已不足k个,结束循环
        if (tail == null) break;
        // 翻转k个节点组成的链表
        // 使用尾插法,遍历将每个节点插入到tail后面
        ListNode head1 = pre.next;
        while (pre.next != tail) {
            ListNode cur = pre.next;
            pre.next = cur.next;
            cur.next = tail.next;
            tail.next = cur;
        }
        pre = head1;
        tail = head1;
    }
    return dummy.next;
}

相关文章

  • leetcode025-k个一组翻转链表

    问题描述 给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表。 k 是一个正整数,它的值小于或等于链表...

  • 25. K 个一组翻转链表

    K个一组反转链表 翻转链表给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表。 k 是一个正整数,它...

  • K 个一组翻转链表(递归,Kotlin)

    25. K 个一组翻转链表 给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表。 k 是一个正整数,它...

  • 【LeetCode】25.K个一组翻转链表

    题目描述 25.K个一组翻转链表 给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表。 k是一个正整数...

  • 【Leetcode】【链表】025-Reverse Nodes

    k个一组翻转链表 给出一个链表,每 k 个节点一组进行翻转,并返回翻转后的链表。k 是一个正整数,它的值小于或等于...

  • 25. k个一组翻转链表

    25.k个一组翻转链表 给出一个链表,每k个节点一组进行翻转,并返回翻转后的链表。 k是一个正整数,它的值小于或等...

  • 前端常见算法题(链表篇)

    一、反转问题 2021.02.11 No.25 K个一组翻转链表 给你一个链表,每 k 个节点一组进行翻转,请你返...

  • LeetCode练习day4-链表相关

    LeetCode25 K个一组翻转链表 题目详情 给你链表的头节点 head ,每 k 个节点一组进行翻转,请你返...

  • LeetCode 25 k个一组翻转链表 Reverse Nod

    有关链表的LeetCode做题笔记合集,Python实现 链表定义 25. k个一组翻转链表 Reverse No...

  • [LeetCode]25、K个一组翻转链表

    题目描述 给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表。 k 是一个正整数,它的值小于或等于链表...

网友评论

      本文标题:leetcode025-k个一组翻转链表

      本文链接:https://www.haomeiwen.com/subject/ewinghtx.html