206. Reverse Linked List
2021. 11. 9. 12:49ㆍLeetcode
Description:
Given the head of a singly linked list, reverse the list, and return the reversed list.
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
'''
[1] iterative)
code::
def reverseList(self, head: Optional[ListNode]) -> Optional[ListNode]:
prev=None
cur=head
next=cur
while cur:
next=cur.next
cur.next=prev
prev=cur
cur=next
return prev
-T/C: O(n)
-S/C: O(1)
'''
'''
[1] recursive)
code::
def reverseList(self, head: Optional[ListNode]) -> Optional[ListNode]:
if not head:
return head
return self.reverse(None,head)
def reverse(self,prev,cur):
if not cur:
return prev
next=cur.next
cur.next=prev
prev=cur
cur=next
return self.reverse(prev,cur)
-T/C: O(n)
-S/C: O(n)
'''
class Solution:
def reverseList(self, head: Optional[ListNode]) -> Optional[ListNode]:
if not head:
return head
return self.reverse(None,head)
def reverse(self,prev,cur):
if not cur:
return prev
next=cur.next
cur.next=prev
prev=cur
cur=next
return self.reverse(prev,cur)
'Leetcode' 카테고리의 다른 글
438. Find All Anagrams in a String (0) | 2021.11.09 |
---|---|
141. Linked List Cycle (0) | 2021.11.09 |
5. Longest Palindromic Substring (0) | 2021.11.08 |
96. Unique Binary Search Trees (0) | 2021.11.08 |
647. Palindromic Substrings (0) | 2021.11.08 |