当前位置: 首页 > news >正文

算法题(Python)链表篇 | 3.翻转链表

算法题(Python)链表篇 | 3.翻转链表

  • 一、题目描述
  • 二、思路

一、题目描述

力扣题目链接
给你单链表的表头head,请你反转链表,并返回反转后的链表。

示例1:
在这里插入图片描述

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

示例2:
在这里插入图片描述

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

二、思路

如果再定义一个新的链表,实现链表元素的反转,这是对内存空间的浪费。
其实只需要改变链表的next指针的指向,直接将链表反转,而不用重新定义一个新的链表,如图所示:
在这里插入图片描述
之前链表的头节点是元素1,反转之后头节点就是元素5,这里并没有添加或删除节点,仅仅是改变next指针的方向。
首先定义一个cur指针,指向头节点;再定义一个pre指针,初始化为null。
然后开始反转,首先将cur→next节点用tmp指针保存一下,即保存这个节点。(之所以保存该节点,是因为要改变cur→next的指向,将cur→next指向pre,从而反转第一个节点)
接下来,循环走代码逻辑,继续移动pre和cur指针。
最后,cur指针指向null,循环阶数,链表翻转完毕,此时return pre指针即可,pre指针指向新的头节点。
代码如下:
时间复杂度O(n)O(n)O(n),空间复杂度O(1)O(1)O(1)

# 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: Optional[ListNode]) -> Optional[ListNode]:cur = head  # 定义一个cur指向头节点pre = None  # 定义一个空节点while cur:temp = cur.next  # 保存cur的下一个节点,因为要改变该节点cur.next = pre   # 翻转操作pre = cur        # 更新per指针cur = temp       # 更新temp指针return pre
http://www.dtcms.com/a/606515.html

相关文章:

  • 找个免费的网站这么难吗用jsp做的二手交易网站
  • 网站后台申请邮箱手机网站 方案
  • 新站突然网站停止收录给公司做个网站多少钱
  • 【C语言实战:实现数组的重复拼接(动态内存+指针参数详解)】
  • wordpress文章付费可看温岭新站seo
  • React zustand todos案例(带本地存储localStorage、persist)todoStore.ts
  • mac配置 unity+vscode的坑
  • 极速网站推广专家wordpress综合网
  • 上海定制网站建设公司网站域名什么意思
  • 【OpenCV + VS】直方图与模糊操作
  • 代码随想录 435.无重叠区间
  • 【AVL树与红黑树】:告别“瘸腿”树,体验平衡的艺术
  • 智慧团建网站入口官网有什么做ppt的网站吗
  • 机器人“小脑”萎缩,何谈“大脑”智慧?六维力/关节力传感器才是“救命稻草”
  • 基于SpringBoot的图书馆管理系统的设计与实现
  • SpringCloud快速通关(中)
  • 性价比高的时序数据库哪个专业
  • 邵阳高端网站建设做响应式网站的物流
  • 网站定制开发哪家厉害网站登录界面源码
  • 自己电脑做网站服务器违法吗上海网站建设最好的公司排名
  • C++-vector-back子函数和std::move函数详细介绍
  • 07.指针
  • 【gas优化】2.9 使用sstore2或sstore3存储大量数据
  • 来宾北京网站建设网站浏览思路
  • 网站建设模式化的体现企业个人邮箱怎么注册
  • 分布式部署
  • 保障电网安全,赋能绿色能源:AM5SE-PV系列主从机防逆流保护装置在江西丰城曲江煤炭开发公司5.8MW分布式光伏项目的关键角色
  • C/C++ Linux网络编程3 - Socket编程与TCP服务器客户端
  • 镇江大港南站wordpress 新闻 通知
  • 【ZeroRange WebRTC】RFC 5389:STUN 协议规范(中文整理与译注)