方法1:(迭代)
# 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
"""
pre = None
while head:
cur = head
head = head.next
cur.next = pre
pre = cur
return pre
方法2:(递归)
# 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
"""
def reverse(node, pre = None):
if not node:
return pre
n = node.next
node.next = pre
return reverse(n, node)
return reverse(head)
0,参考了部分
1,题目要求:
将一个单链表进行逆转,返回值为生成的逆转列表的第一个点。
2,一开始想到用node.next.next的方式进行操作,但是却不可行。用迭代的办法,分别记录前一个点,目前的点和后一个点,需要注意的是,第一个点的指向的前一个点为None,即链表尾部。
3,递归和迭代的区别:
递归:盗梦空间
迭代:明日边缘