LintCode - 旋轉鏈表(中等)

版權聲明:本文為博主原創文章,未經博主允許不得轉載。

難度:中等
要求:

給定一個鏈表,旋轉鏈表,使得每個節點向右移動k個位置,其中k是一個非負數
樣例

給出鏈表1->2->3->4->5->null和k=2
返回4->5->1->2->3->null
思路:

解題容易,注意邊界處理。

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) {
 *         val = x;
 *         next = null;
 *     }
 * }
 */


public class Solution {
    /*
     * @param head: the List
     * @param k: rotate to the right k places
     * @return: the list after rotation
     */
    public ListNode rotateRight(ListNode head, int k) {
        if(head == null){
            return null;
        }
        
        int len = getLen(head);
        k %= len;
        
        ListNode root = new ListNode(0);
        root.next = head;
        head = root;
    
        for(int i = 0; i < k; i++){
            head = head.next;
        }
        
        ListNode tail = root;
        
        while(head.next != null){
            head = head.next;
            tail = tail.next;
        }
        
        head.next = root.next;
        root.next = tail.next;
        tail.next = null;
        return root.next;
    }
    
    private int getLen(ListNode node){
        int len = 0;
        while(node != null){
            node = node.next;
            len++;
        }
        return len;
    }

}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 版權聲明:本文為博主原創文章,未經博主允許不得轉載。 難度:中等 要求: 你有兩個用鏈表代表的整數,其中每個節點包...
    柒黍閱讀 624評論 0 0
  • 題目 給定一個鏈表,旋轉鏈表,使得每個節點向右移動k個位置,其中k是一個非負數 樣例給出鏈表1->2->3->4-...
    六尺帳篷閱讀 429評論 0 1
  • 3.10 69.給出一棵二叉樹,返回其節點值的層次遍歷(逐層從左往右訪問) 二叉樹的層次遍歷樣例給一棵二叉樹 {3...
    mytac閱讀 1,104評論 3 3
  • 背景 一年多以前我在知乎上答了有關LeetCode的問題, 分享了一些自己做題目的經驗。 張土汪:刷leetcod...
    土汪閱讀 12,778評論 0 33
  • 版權聲明:本文為博主原創文章,未經博主允許不得轉載。 難度:容易 要求: 給定一個字符串和一個偏移量,根據偏移量旋...
    柒黍閱讀 1,600評論 0 1