JavaScript ( LEET CODE )でリンクリストを回転させる

1127 ワード

問題点
リンクされたリストを与えられた場合、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
アルゴリズム
ステップ1:-最初に我々はそれを横断してリンクリストの長さを見つける.
ステップ2:-リンクされたリストを介して横断後、我々は尾ノード
ステップ3 :-接続ノードをノードに接続する
ステップ4 : -リンクされたリストの長さを渡された回転値(k)で比較する
ステップ5:-私たちは新しい回転リンクリストを取得するために新しい長さを取得するkとそれを克服した後
解決方法
var rotaterright = function ( head , k ){ { } {関数を指定します.
を返します.
リターンヘッド

レットI = 1
レット・テール
の間に
アイプラス
tail = tail次
//i = 5 (リストの長さ)
を返します.
リターンヘッド

一方( k > i )
ケー=ケー

j = i - k//j = 5 - 2
しっぽ.次の頭;
newtail = tailを聞かせてください;
while(j-- > 0){
    newTail = newTail.next
}
let newHead = newTail.next
newTail.next = null;
return newHead
//