链表 61. 旋转链表

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

示例 1:

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

查看原文

这道题目思路很简单,直接连接头和尾,选倒数第k个节点为头结点就行了,也就是

int mod = k % count;,mod也就是顺序头节点,代码

public static ListNode rotateRight(ListNode head, int k) {
         ListNode currNode = head;
         int count = 0;
         if (currNode == null)
             return null;
         if (k == 0) {
             return  head;
         }
         while (currNode.next != null) {
             currNode = currNode.next;
             count++;
         }
         count++;
         currNode.next = head;
<pre><code>     int mod = k % count;
     currNode = head;
     for (int i = 0; i &lt; count - mod  - 1; i++) {
         currNode = currNode.next;
     }

     ListNode newHead = currNode.next;
     currNode.next = null;
     System.out.println(newHead.val);
     return newHead;
}