0
点赞
收藏
分享

微信扫一扫

LeetCode 61. 旋转链表

Hyggelook 2022-08-03 阅读 70


思路

题目地址:https://leetcode-cn.com/problems/rotate-list/
思路:

  1. 算出链表的长度length
  2. k = k % length,为0的话直接返回原来的头节点即可
  3. 头尾相接,此时最新的头节点为原来的头节点往后走length-k步,断开length-k-1和length-k-1的netx指针即可

代码

public class Solution {

public ListNode rotateRight(ListNode head, int k) {
if (head == null) {
return null;
}
int length = 0;
ListNode headNode = head;
ListNode tailNode = head;
ListNode tempNode = head;
while (tempNode != null) {
tailNode = tempNode;
tempNode = tempNode.next;
length++;
}
k = k % length;
if (k == 0) {
return headNode;
}
tailNode.next = headNode;
tempNode = head;
for (int i = 0; i < length - k - 1; i++) {
tempNode = tempNode.next;
}
ListNode newHeadNode = tempNode.next;
tempNode.next = null;
return newHeadNode;
}

}


举报

相关推荐

0 条评论