python 递归解法

# -*- coding:utf-8 -*-
# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = None
'''
递归:
1.开始状态
       |pHead|--->|pHead.next|--> ……

2.递归:假设pHead.next之后的结点已经反转则如下:
           ___________________      newHead=self.ReverseList(pHead.next)    
          |                   ↓                     | 
      |pHead|     None <--|pHead.next| <-- …… <--|newHead|  

  接下来只需进行如下操作:
       pHead.next指向pHead,
       pHead指向None 就完成了最后一步操作:
                                    newHead=self.ReverseList(pHead.next)    
                                                     |
      None <--|pHead|  <--|pHead.next| <-- …… <--|newHead|  

  最后返回整个链表的新表头即可

3.加上递归结束条件
    当pHead为None时直接返回None 当我们pHead.next为None时 返回pHead就行
'''
class Solution:
    # 返回ListNode
    def ReverseList(self, pHead):
        # write code here
        if not pHead or not pHead.next:
               return  pHead
        newHead=self.ReverseList(pHead.next)
        pHead.next.next=pHead
        pHead.next=None
        return newHead
全部评论

相关推荐

争当牛马还争不上
码农索隆:1.把简历改哈 2.猛投,狠投 3.把基础打牢 这样你在有机会的时候,才能抓住
点赞 评论 收藏
分享
自由水:笑死了,敢这么面试不敢让别人说
点赞 评论 收藏
分享
06-26 17:24
已编辑
宁波大学 Java
一口洪烧肉:哈哈哈哈哈哈哈哈哈哈哈硬要啊
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务