返回
击败[路飞]_LeetCode 206. 反转链表 让你的代码所向披靡!
前端
2023-10-14 02:21:21
在计算机科学中,反转链表是一种常见且重要的操作。它涉及将链表中的元素顺序从头到尾反转。反转链表有很多应用,包括:
- 撤销操作:在某些情况下,我们可能需要撤销之前执行的操作。反转链表可以帮助我们轻松地做到这一点。
- 比较两个链表:如果我们想比较两个链表是否相等,我们可以先反转其中一个链表,然后比较两个链表的元素。
- 查找链表的中间元素:如果我们想查找链表的中间元素,我们可以先反转链表,然后将链表一分为二。
反转链表有很多种方法,最常见的方法是使用迭代或递归。
迭代法
迭代法是一种简单而有效的方法。它从链表的头部开始,依次遍历链表中的每个元素,并将每个元素插入到反转链表的头部。以下是迭代法反转链表的步骤:
- 创建一个新的空链表。
- 从链表的头部开始,依次遍历链表中的每个元素。
- 将每个元素插入到反转链表的头部。
- 重复步骤2和步骤3,直到遍历完链表中的所有元素。
递归法
递归法也是一种常用的方法。它从链表的尾部开始,依次遍历链表中的每个元素,并将每个元素插入到反转链表的头部。以下是递归法反转链表的步骤:
- 如果链表为空,则返回一个空链表。
- 从链表的尾部开始,依次遍历链表中的每个元素。
- 将每个元素插入到反转链表的头部。
- 将反转链表的尾部指向链表的头部。
- 返回反转链表。
示例代码
以下是用Python实现的迭代法反转链表的示例代码:
def reverse_list(head):
"""
反转链表。
参数:
head: 链表的头部。
返回:
反转后的链表的头部。
"""
# 创建一个新的空链表。
new_head = None
# 从链表的头部开始,依次遍历链表中的每个元素。
while head:
# 将每个元素插入到反转链表的头部。
new_head = ListNode(head.val, new_head)
# 将链表的头部指向下一个元素。
head = head.next
# 返回反转链表的头部。
return new_head
以下是用Python实现的递归法反转链表的示例代码:
def reverse_list(head):
"""
反转链表。
参数:
head: 链表的头部。
返回:
反转后的链表的头部。
"""
# 如果链表为空,则返回一个空链表。
if not head:
return None
# 从链表的尾部开始,依次遍历链表中的每个元素。
new_head = reverse_list(head.next)
# 将每个元素插入到反转链表的头部。
head.next = new_head
# 将反转链表的尾部指向链表的头部。
return head
结语
反转链表是一种常见且重要的操作。掌握反转链表的算法和技巧,可以帮助我们解决许多问题。在本文中,我们介绍了两种反转链表的方法:迭代法和递归法。我们还提供了用Python实现的示例代码。希望本文对您有所帮助。