🤞
206. Reverse Linked Listの解き方について
問題文
Given the head of a singly linked list, reverse the list, and return the reversed list.
Input: head = [1,2,3,4,5]
Output: [5,4,3,2,1]
考え方
prev
とcurr
をそれぞれ宣言し、上記のようなイメージで配置させます。
prev = None
curr = head
curr
とcurr.next
のリンクを切り、curr
とprev
を繋ぎます。
prev
をcurr
の位置に持ってきます。
curr
を次のポイントに持ってきます。
これをcurr
が末尾のNULLに到達するまで続けます。
解法
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution:
def reverseList(self, head: Optional[ListNode]) -> Optional[ListNode]:
prev = None
curr = head
while curr is not None:
next_node = curr.next
curr.next = prev
prev = curr
curr = next_node
return prev
計算量
- 時間計算量
O(n) - 空間計算量
O(1)
Discussion