代码随想录二刷 | 链表 | 翻转链表

代码随想录二刷 | 链表 | 翻转链表

  • 题目描述
  • 解题思路 & 代码实现
    • 双指针法
    • 递归法

206.翻转链表

题目描述

给你单链表的头节点 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

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

解题思路 & 代码实现

双指针法

只需要改变链表的 next 指针的指向,直接将链表翻转,而不用重新定义一个链表。
在这里插入图片描述
首先定义一个 cur 指针指向头节点,在定义一个 pre 指针初始化为 null

随后将cur->next节点用 tmp指针保存一下,随后将cur -> next指向 pre ,这样就完成了第一个节点的翻转。

接下来进入循环继续移动 pre 和 cur 指针,最后 cur指针指向 null ,循环结束,链表翻转完成,return pre指针, pre指针就指向了头节点。

class Solution {
public:ListNode* reverseList(ListNode* head) {ListNode* tmp;ListNode* cur = head;ListNode* pre = NULL;while (cur) {tmp = cur -> next;cur -> next = pre;pre = cur;cur = tmp;}return pre;}
};

时间复杂度:O(n)
空间复杂度:O(1)

递归法

class Solution {
public:ListNode* reverse(ListNode* pre, ListNode* cur) {if (cur == NULL) return pre;ListNode* tmp = cur -> next;cur -> next = pre;// 递归写法实际上也是做了这两步// pre = cur;// cur = tmp;return reverse(cur, tmp);}ListNode* reverseList(LKistNode* head) {return reverse(NULL, head);}
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/154954.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

金蝶云星空套打设计

文章目录 金蝶云星空套打设计下载登录打开需要创建套打的单据新建套打模板数据中心-发货通知单-设置预览 金蝶云星空套打设计 下载 登录 打开需要创建套打的单据 KD开头&#xff0c;是标准产品预设。 新建套打模板 默认A4纸 默认插入三行三列。 拖入文本&#xff0c;填写内容…

力扣刷题第二十七天--二叉树

前言 题目大同小异&#xff0c;按要求来即可。 内容 一、二叉树的右视图 199.二叉树的右视图 给定一个二叉树的 根节点 root&#xff0c;想象自己站在它的右侧&#xff0c;按照从顶部到底部的顺序&#xff0c;返回从右侧所能看到的节点值。 广度优先搜索 取每层最后一个…

Enterprise Architect安装与使用

版权声明 本文原创作者&#xff1a;谷哥的小弟作者博客地址&#xff1a;http://blog.csdn.net/lfdfhl Enterprise Architect概述 官方网站&#xff1a;https://www.sparxsystems.cn/products/ea/&#xff1b;图示如下&#xff1a; Enterprise Architect是一个全功能的、基于…

虾皮选品免费工具:如何用知虾进行虾皮市场分析选品

在如今的电商时代&#xff0c;了解市场需求和选择热销产品是成功经营的关键。虾皮作为东南亚地区最大的电商平台之一&#xff0c;提供了一系列的选品工具&#xff0c;帮助卖家在市场竞争中脱颖而出。本文将介绍如何使用虾皮的免费工具——知虾进行虾皮市场分析选品&#xff0c;…

量子计算+物流!“最后一英里”配送难题Unisys成功实时决策

&#xff08;图片来源&#xff1a;网络&#xff09; 此前&#xff0c;供应链行业一直致力于手工操作&#xff0c;严重依赖于纸质系统。后来随着客户需求的不断变化&#xff0c;这种传统方法逐渐显出不足之处。供应链行业正在迅速转向现代化&#xff0c;采用自动化和数据驱动的…

一个快递包裹的跨国之旅

事情要从今年三月份说起&#xff0c;一位爱尔兰的同事在6月份结婚&#xff0c;团队同事准备了中国风的丝绸画轴、领带、丝巾作为礼物。3月份开始邮寄&#xff0c;4月初爱尔兰方面收件&#xff0c;5月份因为文件不足、不完整、不正确等原因被取消进口&#xff0c;7月份退回到大连…

Java使用Redis来实现分布式锁

Java使用Redis来实现分布式锁 在单节点服务中&#xff0c;我们可以使用synchronized来保证同一时间内只允许一个线程执行限定的代码块。但是如果我们是多节点服务呢&#xff0c;因为synchronized是针对服务内部的&#xff0c;其他服务是无法受到他的干预的。那么如何保证多个节…

02【SpringBoot静态处理、错误处理】

目录 一、SpringBoot的WEB开发 1.1 静态资源的处理 1.1.1 静态资源目录 1&#xff09;SpringBoot静态资源处理 2&#xff09;关于静态资源处理的配置 3&#xff09;欢迎页面的处理 4&#xff09;修改SpringBoot资源访问路径 1.1.2 WebJars资源 1.2 注册Servlet三大组件…

比起转本备考不努力,更让人痛心的是这五点

在转本考试中&#xff0c;有一部分同学花费了很多时间去学习&#xff0c;看似很努力&#xff0c;却没有太大的进步与成果。 比起不努力&#xff0c;努力了没有效果才是更让人心痛的。下面这五点行为&#xff0c;希望大家一定要避免&#xff01;一、纠结转本 我们身边可能不乏…

LeSS敏捷框架高效生产力实践

每个团队可能都有一套适合自己的敏捷方法&#xff0c;本文介绍了ResponseTap工程团队通过采用LeSS框架、引入准备周&#xff0c;从而提升迭代冲刺研发效能的实践。原文: LeSS Agile, More Productive — Part 1: Pain[1], LeSS Agile, More Productive — Part 2: Promise, LeS…

免费好用的第三方API汇总

天气预报查询&#xff1a;查询全国以及全球多个城市的天气&#xff0c;包含15天天气预报查询。空气质量查询&#xff1a;查询国内3400个城市的整点观测&#xff0c;获取指定城市的整点观测空气质量。分钟级降水预报&#xff1a;可准确提醒下一场雨何时出现&#xff0c;何时变大…

JavaFX中Application、Stage、Scene和Parent的区别

在JavaFX中&#xff0c;Application、Stage、Scene和Parent是用于构建图形用户界面&#xff08;GUI&#xff09;的关键组件&#xff0c;它们各自有不同的作用和责任。以下是它们之间的主要区别&#xff1a; 1、Application&#xff08;应用程序&#xff09; Application是Java…

全国的科技创新情况数据分享,涵盖2020-2022年三年情况

随着国家对科技创新的重视和大力支持&#xff0c;全国的科技创新情况越来越受到关注。 我们根据中国城市统计年鉴的这方面指标&#xff0c;分析汇总得出全国科技创新情况数据&#xff0c;需要说明的是&#xff0c;由于统计年鉴指标调整&#xff0c;每一年的数据并非字段相同&a…

c语言-浅谈指针(3)

文章目录 1.字符指针变量常见的字符指针初始化另一种字符指针初始化例&#xff1a; 2.数组指针变量什么是数组指针变量数组指针变量创建数组指针变量初始化例&#xff08;二维数组传参的本质&#xff09; 3.函数指针变量什么是函数指针变量呢&#xff1f;函数指针变量创建函数指…

风丘远程试验管理平台TFM 支持“一键式“数据管理和监控

随着信息技术的高速发展&#xff0c;企业对远程试验实时监控与数据管理的需求日益增强。而利用远程试验信息协同技术&#xff0c;可突破部门与地域的限制&#xff0c;并把试验现场的车辆状态信息、试验数据和分析结果实时传输给数据分析部门和设计部门等&#xff0c;从而缩短时…

mysql8 修改用户密码

适用于忘记了密码&#xff0c;但是工具能够进去。 命令&#xff1a; ALTER USER 用户名HOST字段 IDENTIFIED BY 新密码;

【图解算法】- 异位词问题:双指针+哈希表

一 - 前言 介绍&#xff1a;大家好啊&#xff0c;我是hitzaki辰。 社区&#xff1a;&#xff08;完全免费、欢迎加入&#xff09;日常打卡、学习交流、资源共享的知识星球。 自媒体&#xff1a;我会在b站/抖音更新视频讲解 或 一些纯技术外的分享&#xff0c;账号同名&#xff…

TCP传输的三次握手、四次挥手策略是什么

TCP协议是互联网中最常用的协议之一&#xff0c;它保证了数据在网络中的可靠传输。在TCP协议中&#xff0c;三次握手和四次挥手是非常重要的概念&#xff0c;对于理解网络通信和实现网络编程都至关重要。本文将介绍TCP传输的三次握手、四次挥手策略&#xff0c;并提供代码实现&…

物联网网关在工业行业的应用与优势

物联网网关在工业行业的应用与优势 随着科技的发展&#xff0c;物联网&#xff08;IoT&#xff09;在各个行业得到了广泛应用。工业行业是其中的一个重要领域。工业行业涉及到许多生产和运输环节&#xff0c;需要不断地监测和控制各个环节的数据和参数。物联网网关&#xff08…

2311rust,到74版本更新

1.66.0稳定版 显式判定有字段的枚举 即使有字段,带整数表示的枚举现在也可用显式判定器. #[repr(u8)] enum Foo {A(u8),B(i8),C(bool) 42, }跨语言边界传递值时,在两个语言中匹配枚举表示时,显式判定器非常有用.如 #[repr(u8)] enum Bar {A,B,C 42,D, }这里保证Bar枚举有…