链表第4/9题--翻转链表--双指针法

LeetCode206:给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。

示例 1:

输入:head = [1,2,3,4,5]
输出:[5,4,3,2,1]

示例 2:

输入:head = [1,2]
输出:[2,1]

示例 3:

输入:head = []
输出:[]

提示:

  • 链表中节点的数目范围是 [0, 5000]
  • -5000 <= Node.val <= 5000

进阶:链表可以选用迭代或递归方式完成反转。你能否用两种方法解决这道题?

思路分析:要反转链表其实就是将所有的指针的方向进行反转,不用定义新链表。正如示例1中所示,之前的头结点是1,反转之后头结点变成了尾结点。具体操作是:首先定义一个cur指针,这个指针指向头结点,再定义一个pre指针,初始化为None;然后开始反转,使用tmp指针保存cur-next节点;然后改变cur-next的指向,将cur-next指向pre,此时完成了第一个节点的反转;接下来就是循环,继续移动pre和cur指针,当cur指针指向了null时,循环结束,链表反转完毕;返回pre指针,pre指针指向新的头结点。

python代码:

# 双指针法
# Definition for singly-linked list.
# class ListNode:
    def __init__(self, val=0, next=None):
        self.val = val
        self.next = next

class Solution:
    def reverseList(self, head:ListNode)->ListNode:
        cur = head
        pre = None
        while cur:
            temp = cur.next # 保存一下cur的下一个节点,因为接下来要改变cur-next
            cur.next = pre # 反转
            # 更新pre,cur指针
            pre = cur
            cur = temp
        return pre

相关推荐

  1. Golang leetcode206 翻转 迭代 递归 指针

    2024-05-10 12:46:06       60 阅读
  2. 96 指针解旋转

    2024-05-10 12:46:06       56 阅读
  3. 2024-05-10 12:46:06       25 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-05-10 12:46:06       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-05-10 12:46:06       106 阅读
  3. 在Django里面运行非项目文件

    2024-05-10 12:46:06       87 阅读
  4. Python语言-面向对象

    2024-05-10 12:46:06       96 阅读

热门阅读

  1. (十二)C语言的结构体

    2024-05-10 12:46:06       37 阅读
  2. 设计模式——观察者模式(Observer)

    2024-05-10 12:46:06       32 阅读
  3. 责任链模式案例

    2024-05-10 12:46:06       31 阅读
  4. Linux下添加自己的服务脚本(service)

    2024-05-10 12:46:06       35 阅读
  5. 路由发布中的前缀列表的使用方法 ip prefix-list

    2024-05-10 12:46:06       22 阅读
  6. SSL证书签发错误怎么回事?

    2024-05-10 12:46:06       27 阅读
  7. Unity编辑器扩展

    2024-05-10 12:46:06       29 阅读
  8. uniapp:项目目录下没有package.json文件的创建办法

    2024-05-10 12:46:06       30 阅读
  9. 【设计模式】之适配器模式

    2024-05-10 12:46:06       32 阅读
  10. 如何在Linux环境下运行Excel的VBA宏文件

    2024-05-10 12:46:06       34 阅读