Menu
CoddyTech

Reverse Linked List

やさしい連結リストpython iconjava iconcpp iconc iconjs icon+10

配列 next に格納された単方向連結リストが与えられます。ノード i はノード next[i] にリンクし、-1 はリストの終端を示し、先頭はノード 0 です。ノードはリストの順序どおりには格納されていないため、リンクをたどってください。

すべてのリンクの向きを反転してリストを逆順にします。これにより、元の最後のノードが先頭になり、ノード 0 は最後のノードとなって -1 にリンクします。入力と同じ長さの、更新後の next 配列を返してください。

関数

reverseList(next: integer-array) → integer-array
nextinteger-array
各ノードがリンクするノードのインデックス。最後のノードの場合は -1
戻り値integer-array
逆順にしたリストの次の配列

制約

  • 1 ≤ next.length ≤ 5000
  • 各 next[i] は -1 または 0 から next.length-1 までのノードインデックスです。
  • ノード 0 から始まり、リストは各ノードをちょうど1回ずつ訪れた後、-1 に到達します。循環はありません。

例

入力
next = [1, 2, 3, -1]
出力
[-1, 0, 1, 2]
説明
リストは 0 → 1 → 2 → 3 です。逆順にすると 3 → 2 → 1 → 0 なので、ノード 3 は 2 に、ノード 2 は 1 に、ノード 1 は 0 に、そしてノード 0 は -1 にリンクします。

lock icon提出時に隠しテスト+11件

challenge icon

発展問題

リストのうち、位置 left と位置 right の間の部分だけを逆順にして、その前後のノードはそのままにできますか?

コードをリセット
def reverseList(next):
    # ここにコードを書いてください
テストケース

ケース1

ケース2

ケース3

入力

next = [1, 2, 3, -1]

期待値

[-1, 0, 1, 2]