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. 论文后面的“录用”和“小修”啥的都删掉,默认全录用,问了再说,反正小修毕业前肯定能发出来 4. 工作经验和研究成果没有体现你的个人贡献,着重包装一下个人贡献
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务