1. 双指针迭代
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
def reverseList(self, head: ListNode) -> ListNode:
pre, cur = None, head
while cur:
tmp = cur.next
cur.next = pre
pre = cur
cur = tmp
return pre
- 时间复杂度:O(n)
- 空间复杂度:O(1)
2. 递归
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
def reverseList(self, head: ListNode) -> ListNode:
def recur(cur, pre):
if not cur:
return pre
res = recur(cur.next, cur)
cur.next = pre
return res
return recur(head,None)
- 时间复杂度: O(n) 需要对链表的每个节点进行反转操作;
- 空间复杂度: O(n) 递归调用的栈空间最多为 n 层。
7873



被折叠的 条评论
为什么被折叠?



