题目信息

解题思路

代码

Iteratively

  # 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: ListNode) -> ListNode:
		  if head == None:
			  return None
		  p = head
		  prev = None
		  while p != None:
			  n = p.next
			  p.next = prev
			  prev = p
			  p = n
		  return prev

Recursively

  # 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 _reverse(prev, cur):
			  if cur is None:
				  return prev
			  tmp = cur.next
			  cur.next = prev
			  prev = cur
			  return _reverse(prev, tmp)
  
		  return _reverse(None, head)