您的位置:首页 > 编程语言 > Python开发

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: