LeetCode Java刷题笔记—61. 旋转链表
Posted 刘Java
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode Java刷题笔记—61. 旋转链表相关的知识,希望对你有一定的参考价值。
给你一个链表的头节点 head ,旋转链表,将链表每个节点向右移动 k 个位置。
中等难度。首先得到链表的节点数量n以及尾部节点,然后计算k%n的值m,如果m为0,则表示旋转之后的链表和原来的链表是一样的,直接返回head,否则,该值可以表示当前链表的倒数第m个节点就是旋转后的头节点。
public ListNode rotateRight( ListNode head, int k )
if( head == null || head.next == null || k == 0 )
return head;
//链表总节点数
int count = 1;
ListNode tmp = head;
while( tmp.next != null )
count++;
tmp = tmp.next;
k %= count;
//k为0直接返回
if( k == 0 )
return head;
// 旋转
tmp.next = head;
//找到倒数第k+1个节点
for( int i = 0; i < count - k; i++ )
tmp = tmp.next;
//tmp节点为旋转后链表头节点的前驱节点,
ListNode newHead = tmp.next;
//断开
tmp.next = null;
return newHead;
以上是关于LeetCode Java刷题笔记—61. 旋转链表的主要内容,如果未能解决你的问题,请参考以下文章
力扣(LeetCode)剑指offer刷题笔记(java),已完结!!!