https://leetcode.com/problems/reverse-linked-list/
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
연결 리스트를 뒤집어라
Input: head = [1,2,3,4,5]
Output: [5,4,3,2,1]
이전 노드, 현재 노드, 다음 노드 변수를 선언해서 연결 리스트를 뒤집었다.
-> 81 ms...
class Solution:
def reverseList(self, head: Optional[ListNode]) -> Optional[ListNode]:
before_head = None
trav_head = head
after_head = head.next
while not trav_head:
trav_head.next = before_head
before_head = trav_head
trav_head, after_head = after_head, after_head.next
return before_head
->81 ms
class Solution:
def reverseList(self, head: Optional[ListNode]) -> Optional[ListNode]:
def reverse(node: ListNode, prev: ListNode = None):
if not node:
return prev
next, node.next = node.next, prev
return reverse(next, node)
return reverse(head)
->80 ms
class Solution:
def reverseList(self, head: Optional[ListNode]) -> Optional[ListNode]:
node, prev = head, None
while node:
next, node.next = node.next, prev
prev, node = node, next
return prev
내가 햇던 코드랑 비슷한데 훨씬 간결하게 잘 표현했다...