61.旋轉鏈表
方法:
記給定的鏈表的長度為n,注意當向右移動的次數k>=n時,僅需要向右移動k mod n
次即可,因為每n次移動都會讓鏈表變為原狀
將給定的鏈表連接成環,然后將指定位置斷開
/*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}* ListNode(int val) { this.val = val; }* ListNode(int val, ListNode next) { this.val = val; this.next = next; }* }*/
class Solution {public ListNode rotateRight(ListNode head, int k) {if(k==0 || head == null || head.next == null){return head;}int n = 1;ListNode p = head;while(p.next != null) {p = p.next;n++;}if(k % n == 0 ){return head;}p.next = head; //最后一個節點指向頭節點,形成一個環形鏈表int add = n - k % n;//找到尾節點while(add > 0){p = p.next;add--;}ListNode t = p.next;p.next = null;return t;}}