LeetCode題解:61.旋轉鏈表

旋轉鏈表

一、LeetCode題解

瞧一瞧(求star!)

二、算法題

題目

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

示例 1:

輸入: 1->2->3->4->5->NULL, k = 2
輸出: 4->5->1->2->3->NULL
解釋:
向右旋轉 1 步: 5->1->2->3->4->NULL
向右旋轉 2 步: 4->5->1->2->3->NULL

示例 2:

輸入: 0->1->2->NULL, k = 4
輸出: 2->0->1->NULL
解釋:
向右旋轉 1 步: 2->0->1->NULL
向右旋轉 2 步: 1->2->0->NULL
向右旋轉 3 步: 0->1->2->NULL
向右旋轉 4 步: 2->0->1->NULL

解法一 (鏈表->數組->鏈表)

思路

代碼

var rotateRight = function(head, k) {
    if(!head) return null
    var cur = head
    var arr = [] // 節點數組
    var len = 0 // 節點長度
    while(cur){
        arr.push(cur.val)
        cur = cur.next
        len++
    }
    k = k % len // 去掉環
    while(k > 0){
        let temp = arr.pop()
        arr.unshift(temp)
        k--
    }
    for(let i = 0; i < arr.length; i++){
        arr[i] = new ListNode(arr[i])
    }
    var i = 0
    while(i < arr.length){
        arr[i].next = arr[i+1]
    }
    return arr[0]
};

結果

在這裏插入圖片描述

關於我

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