📅  最后修改于: 2023-12-03 14:56:43.363000             🧑  作者: Mango
这里介绍一道常见的算法问题:反转链表。
给定一个链表的头节点 head,将其反转后返回新的头节点。
我们可以通过遍历链表来逐步将链表中的元素反转过来。具体的思路如下:
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
def reverseList(head: ListNode) -> ListNode:
pre, cur, next = None, head, None
while cur:
next = cur.next
cur.next = pre
pre, cur = cur, next
return pre
时间复杂度:O(n),其中 n 为链表的长度。因为每个节点只遍历一次即可,总共需要遍历 n 个节点。
空间复杂度:O(1),只用到了常数级别的额外空间。