leetcodeの「206. Reverse Linked List」問題について
回答がわからず検索したところ下記のコードに行き着きましたが、解読できず困っています。
※LinkedListというよりpythonの仕様理解不足の気はしていますが
最初のwhile文はheadをstackに格納するため(後からpop()で逆順取得するため)というのは
理解できましたが、後半のwhile文でcurとstackの操作しか行われておらず、なぜheadの値が書き変わっているのか?(どこで参照が渡っている?)がわからずつまづいています。
実装したい仕様
inputしたListNode型を逆順にして返す
(ex.) Input: head = [1,2,3,4,5] Output: [5,4,3,2,1]
python
1# Definition for singly-linked list. 2# class ListNode: 3# def __init__(self, val=0, next=None): 4# self.val = val 5# self.next = next 6class Solution: 7 def reverseList(self, head: ListNode) -> ListNode: 8 if not head: 9 return None 10 11 stack = [] 12 13 while head.next: 14 stack.append(head) 15 head = head.next 16 17 while stack: 18 cur = stack.pop() 19 cur.next.next = cur 20 cur.next = None 21 22 return head
回答3件
あなたの回答
tips
プレビュー