LeetCode -- 61. Rotate List
Posted kyrie211
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode -- 61. Rotate List相关的知识,希望对你有一定的参考价值。
题意及思路
题意:大致是最尾节点(tail)移动到头节点,移动k次。
思路:先遍历一遍链表,得到其长度,用len对k取模(目的是想减少不必要的移动操作,比如一个链表长为3,k为4,其实只需要移动4%3次)。然后就是将尾节点移动到头节点的操作,具体操作见代码。
代码
/** * Definition for singly-linked list. * public class ListNode * int val; * ListNode next; * ListNode(int x) val = x; * */ class Solution public ListNode rotateRight(ListNode head, int k) if(head==null) return head; ListNode p = head,q,top = new ListNode(-1); top.next = head; int len = 0; while(p!=null) len++; p=p.next; k %= len; while(k-->0) p = top; //找到尾节点前面一个位置 while(p.next.next!=null) p=p.next; q = p.next; p.next = q.next; q.next = top.next; top.next = q; return top.next;
以上是关于LeetCode -- 61. Rotate List的主要内容,如果未能解决你的问题,请参考以下文章