LeetCode:143。再注文リスト-Python



Leetcode 143 Reorder List Python



問題の説明:

単一のリンクリストが与えられた場合L:L0→L1→…→Ln-1→Ln
次のように再配置します:L0→Ln→L1→Ln-1→L2→Ln-2→…

ノード内の値を変更するだけでなく、実際にノードを交換する必要があります。



例:

リンクリスト1-> 2-> 3-> 4-> 5が与えられた場合、1-> 5-> 2-> 4-> 3に再配置します。



問題分析:

方法1:

(1)リンクリストをリスト配列に変換します。
(2)リスト配列のインデックスを使用して、直接接続できます。

Python3の実装:

# Definition for singly-linked list. class ListNode: def __init__(self, x): self.val = x self.next = None class Solution: def reorderList(self, head): if not head: return ltmp = [] cur = head while cur: # into a list ltmp.append(cur) cur = cur.next n = len(ltmp) # for i in range(n // 2): # deal with ltmp[i].next = ltmp[n - 1 - i] ltmp[n - 1 - i].next = ltmp[i + 1] ltmp[n // 2].next = None #

ステートメント: 学習、問題、または不十分さを要約すると、批判して修正することができます。

トピックリンク: leetcode-cn.com/problems/reorder-list/