【leetcode】 61. 旋轉鏈表

 

 

其實就是將鏈表從 第 size-k個位置截斷,然後將後半部分拼接到前半部分。(其中size是鏈表的長度,k需要處理一下,k=size%k,如果k=0的話,就相當於是沒有移動)

/**
 * 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) {
             ListNode cur = head,kNode=null,kNextNode=null,lastNode=null;
        int size = 0;
        while(cur!=null){
            size++;
            lastNode = cur;
            cur = cur.next;
        }
        if(size==0)
           return head;
        k = k%size;
        if (k==0)
            return head;
        k = size-k;
        cur = head;
        size = 0;
        while(cur!=null){
            size++;
            if (size==k){
                kNode = cur;
                kNextNode = cur.next;
                break;
            }
            cur = cur.next;
        }
        lastNode.next = head;
        kNode.next = null;
        return kNextNode;
        }
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章