标签:def 遍历 ++ int 题意 ext node link 目的
题意:大致是最尾节点(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; } }
标签:def 遍历 ++ int 题意 ext node link 目的
原文地址:https://www.cnblogs.com/kyrie211/p/11225842.html