알고리즘

[LeetCode] 206. Reverse Linked List

유병각 2022. 4. 28. 22:46

[LeetCode] 206. Reverse Linked List

풀이_#1 반복문

# 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]:


        curr = head
        if (not curr):
            return None
        before = None       

        while(curr):
            temp = curr.next
            curr.next = before
            before = curr
            curr = temp

        return before

풀이_#2 재귀

# 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]:


        def rec(node,before):
            if (not node):
                return before;

            temp = node.next
            node.next = before
            return rec(temp, node)

        return rec(head, None)