面试算法-164-K 个一组翻转链表

题目

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

k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。

你不能只是单纯的改变节点内部的值,而是需要实际进行节点交换。

示例 1:
在这里插入图片描述

输入:head = [1,2,3,4,5], k = 2
输出:[2,1,4,3,5]

/**
 * 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) {
        if (head == null || head.next == null) {
            return head;
        }

        ListNode dummy = new ListNode(0);
        dummy.next = head;
        int count = 0;
        ListNode pre = dummy;
        ListNode cur = head;
        ListNode next = null;
        while (cur != null) {
            next = cur.next;
            count++;

            if (count == k) {
                ListNode p1 = pre.next;
                ListNode p2 = cur;
                p2.next = null;

                reverse(p1);

                pre.next = p2;
                p1.next = next;

                pre = p1;
                count = 0;
            }
            cur = next;
        }
        return dummy.next;
    }

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

        ListNode pre = null;
        ListNode cur = head;
        ListNode next = null;
        while (cur != null) {
            next = cur.next;

            cur.next = pre;

            pre = cur;
            cur = next;
        }
    }
}

相关推荐

  1. 算法k翻转

    2024-04-12 19:06:03       22 阅读
  2. 【OJ】K 翻转

    2024-04-12 19:06:03       21 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-12 19:06:03       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-12 19:06:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-12 19:06:03       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-12 19:06:03       20 阅读

热门阅读

  1. linux常用命令汇总

    2024-04-12 19:06:03       16 阅读
  2. leetcode热题HOT 200. 岛屿数量(深入理解DFS和BFS)

    2024-04-12 19:06:03       16 阅读
  3. 从入门到放弃:Docker基础教程

    2024-04-12 19:06:03       14 阅读
  4. 聚焦ChatGPT:让论文写作更高效更精准

    2024-04-12 19:06:03       16 阅读
  5. 个人微信api

    2024-04-12 19:06:03       16 阅读
  6. redis分桶路由方案及代码(项目功能模拟)

    2024-04-12 19:06:03       16 阅读
  7. sql执行过长,如何优化?--一起学习吧之数据库

    2024-04-12 19:06:03       18 阅读
  8. tcp接受命令执行并回显

    2024-04-12 19:06:03       16 阅读
  9. 安卓工厂模式TODO

    2024-04-12 19:06:03       18 阅读
  10. windows 下 MinGW,TDM-GCC 编译64位和32位应用

    2024-04-12 19:06:03       16 阅读
  11. 基于Python的邮件分类系统设计与实现

    2024-04-12 19:06:03       16 阅读