206. Reverse Linked List [easy] (Python)
2016-05-03 17:12
537 查看
题目链接
https://leetcode.com/problems/reverse-linked-list/题目原文
Reverse a singly linked list.题目翻译
翻转单向链表思路方法
这个题目比较基础,解法非常多,能AC的解法也很多,这里只整理部分思路以供参考。思路一
利用栈结构,将链表内容依次压入栈,再从栈依次弹出即可构造逆序。下面的代码用普通数组模拟栈。代码
# Definition for singly-linked list. # class ListNode(object): # def __init__(self, x): # self.val = x # self.next = None class Solution(object): def reverseList(self, head): """ :type head: ListNode :rtype: ListNode """ p = head newList = [] while p: newList.insert(0, p.val) p = p.next p = head for v in newList: p.val = v p = p.next return head
思路二
与思路一栈的思想类似,不过是直接在原链表操作,通过迭代将节点重组,前面的节点转移到重组链表的后面。实际上就是头结点倒插操作。代码
# Definition for singly-linked list. # class ListNode(object): # def __init__(self, x): # self.val = x # self.next = None class Solution(object): def reverseList(self, head): """ :type head: ListNode :rtype: ListNode """ new_head = None while head: p = head head = head.next p.next = new_head new_head = p return new_head
思路三
递归,注意终止条件代码
# Definition for singly-linked list. # class ListNode(object): # def __init__(self, x): # self.val = x # self.next = None class Solution(object): def reverseList(self, head): """ :type head: ListNode :rtype: ListNode """ if not head or not head.next: return head p = head.next n = self.reverseList(p) head.next = None p.next = head return n
PS: 新手刷LeetCode,新手写博客,写错了或者写的不清楚还请帮忙指出,谢谢!
转载请注明:/article/11857807.html
相关文章推荐
- Python获取指定文件夹下的文件名
- 理解Python的With语句
- Python字典按值排序、包含字典的列表按字典值排序的方法
- Python函数/方法装饰器
- python学习第二站--列表list、tuple
- [python]CategoryTree的设计与实现
- python常用代码
- Python入门
- 在Vim中执行Python
- python中os.walk浏览目录和文件
- 『Python高级编程』学习笔记之二: 第十章——编写项目文档
- Python3爬虫入门之贴吧图片批量获取
- 批量更名
- python的魔术方法
- python成功配置scikit-learn,含试错历程
- Python file.seek()文件游标移动操作方法
- 使用python抓取豆瓣电影信息
- Python Rate Limiter
- python读conf配置文件--ConfigParser
- Python基础