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
全部评论

相关推荐

LuvSran:是人我吃。老师就是学校呆久了,就业方面啥都不懂,还自以为是为了我们就业好。我学校就一破双非,计科入行率10%都没有,某老师还天天点名,说是出勤率抬头率前排率高了,华为什么的大厂就会来,我们就是不好好上课才没有厂来招。太搞笑了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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