[206]反转链表

# 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。
#  
#  
#  
# 
#  示例 1: 
# 
#  
# 输入:head = [1,2,3,4,5]
# 输出:[5,4,3,2,1]
#  
# 
#  示例 2: 
# 
#  
# 输入:head = [1,2]
# 输出:[2,1]
#  
# 
#  示例 3: 
# 
#  
# 输入:head = []
# 输出:[]
#  
# 
#  
# 
#  提示: 
# 
#  
#  链表中节点的数目范围是 [0, 5000] 
#  -5000 <= Node.val <= 5000 
#  
# 
#  
# 
#  进阶:链表可以选用迭代或递归方式完成反转。你能否用两种方法解决这道题? 
#  
#  
#  Related Topics 递归 链表 👍 2039 👎 0


# leetcode submit region begin(Prohibit modification and deletion)
# 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:
        # 最开始的链表就是None
        if head is None:
            return head
        # 链表结尾直接返回
        if head.next is None:
            return head
        else:
            # 反转后面的部分
            new_head = self.reverseList(head.next)
            # 把头结点放到尾部
            head.next.next = head
            # 头结点的下一个为None
            head.next = None
            return new_head

# leetcode submit region end(Prohibit modification and deletion)

 

posted @ 2021-10-21 21:59  小熊猫不是小浣熊  阅读(24)  评论(0)    收藏  举报