返回

击败[路飞]_LeetCode 206. 反转链表 让你的代码所向披靡!

前端

在计算机科学中,反转链表是一种常见且重要的操作。它涉及将链表中的元素顺序从头到尾反转。反转链表有很多应用,包括:

  • 撤销操作:在某些情况下,我们可能需要撤销之前执行的操作。反转链表可以帮助我们轻松地做到这一点。
  • 比较两个链表:如果我们想比较两个链表是否相等,我们可以先反转其中一个链表,然后比较两个链表的元素。
  • 查找链表的中间元素:如果我们想查找链表的中间元素,我们可以先反转链表,然后将链表一分为二。

反转链表有很多种方法,最常见的方法是使用迭代或递归。

迭代法

迭代法是一种简单而有效的方法。它从链表的头部开始,依次遍历链表中的每个元素,并将每个元素插入到反转链表的头部。以下是迭代法反转链表的步骤:

  1. 创建一个新的空链表。
  2. 从链表的头部开始,依次遍历链表中的每个元素。
  3. 将每个元素插入到反转链表的头部。
  4. 重复步骤2和步骤3,直到遍历完链表中的所有元素。

递归法

递归法也是一种常用的方法。它从链表的尾部开始,依次遍历链表中的每个元素,并将每个元素插入到反转链表的头部。以下是递归法反转链表的步骤:

  1. 如果链表为空,则返回一个空链表。
  2. 从链表的尾部开始,依次遍历链表中的每个元素。
  3. 将每个元素插入到反转链表的头部。
  4. 将反转链表的尾部指向链表的头部。
  5. 返回反转链表。

示例代码

以下是用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实现的示例代码。希望本文对您有所帮助。