面试算法-81-旋转链表

题目

给你一个链表的头节点 head ,旋转链表,将链表每个节点向右移动 k 个位置。

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

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

class Solution {
    public ListNode rotateRight(ListNode head, int k) {
        if (head == null || head.next == null) {
            return head;
        }

        ListNode p1 = head;
        int count = 1;
        while (p1.next != null) {
            count++;
            p1 = p1.next;
        }
        p1.next = head;

        k = k% count;
        ListNode p2 = head;
        for (int i = 0; i < count - k - 1; i++) {
            p2 = p2.next;
        }

        ListNode result = p2.next;
        p2.next = null;
        return result;

    }
}

相关推荐

  1. 61. 旋转 86. 分隔 |面试经典题

    2024-03-23 21:24:03       39 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-23 21:24:03       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-23 21:24:03       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-23 21:24:03       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-23 21:24:03       18 阅读

热门阅读

  1. C语言动态内存管理

    2024-03-23 21:24:03       18 阅读
  2. Hashmap和Hashtable的区别

    2024-03-23 21:24:03       20 阅读
  3. 蓝桥杯破损的楼梯

    2024-03-23 21:24:03       18 阅读
  4. Spring的炼气之路(炼气三层)

    2024-03-23 21:24:03       19 阅读
  5. Vue框架学习(二)

    2024-03-23 21:24:03       15 阅读
  6. P1109 学生分组

    2024-03-23 21:24:03       21 阅读