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

【LeetCode热题100】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

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

四.解题思路

解法1:尾插法
解法2:递归

五.代码实现

迭代

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     ListNode *next;*     ListNode() : val(0), next(nullptr) {}*     ListNode(int x) : val(x), next(nullptr) {}*     ListNode(int x, ListNode *next) : val(x), next(next) {}* };*/
class Solution {
public:ListNode* reverseList(ListNode* head) {ListNode *p = head;ListNode *q = head;ListNode *r = q;if(head == NULL) return NULL;while(p->next != NULL) p = p->next;ListNode *back = p;while(r != back){r = q->next;q->next = p->next;p->next = q;q = r;}return back;}
};

递归(看的评论)

class Solution {
public:ListNode* reverseList(ListNode* head) {// 链表为空时直接返回,链表不为空则到返回最后一个节点if(!head || !head->next) {return head;}// newHead先指向最后一个节点,注意此时参数是倒数第二个节点// 这一步很精妙,每一次newHead都是指向空指针(链表为空)或保留在原链表中的最后一个节点(链表不空),作用就是返回新的头结点ListNode* newHead = reverseList(head->next);// 最后一个节点指向倒数第二个节点head->next->next = head;// 倒数第二个节点的下一节点置空。此时倒数第三个节点仍指向倒数第二个节点,下一次递归中将倒数第二个节点下一节点指向倒数第三个节点,不断重复这一过程head->next = nullptr;return newHead;}
};

六.题目总结

class Solution {
public:ListNode* reverseList(ListNode* head) {//给我一个结点//我要将该结点后面的结点反过来指向该结点//我要给下个人处理完该处理的下一个结点//当处理完之后就可以返回了if(!head || !head->next) {return head;}ListNode* newHead = reverseList(head->next);head->next->next = head;head->next = nullptr;return newHead;}
};
http://www.lryc.cn/news/317903.html

相关文章:

  • 电玩城游戏大厅计时软件怎么用,佳易王计时计费管理系统软件定时语音提醒操作教程
  • selenium也能过某数、5s盾..
  • mysql笔记:8. 视图
  • 指针的基本概念和用法
  • 工作随记:oracle重建一张1T数据量的大表
  • 使用timm库的一些知识点
  • 一种基于宏和serde_json实现的rust web中统一返回类
  • 每周一算法:A*(A Star)算法
  • 爬虫练习:获取某网站的房价信息
  • 第一个C语言hello world
  • 【Python】新手入门学习:详细介绍依赖倒置原则(DIP)及其作用、代码示例
  • 嵌入式驱动学习目录索引(更新中)
  • ruoyi-vue插件集成websocket
  • 华为ce12800交换机m-lag(V-STP模式)配置举例
  • STM32第九节(中级篇):RCC——时钟树讲解(第一节)
  • c/c++字符串处理标准库 string 介绍
  • HarmonyOS NEXT应用开发之深色模式适配
  • Go微服务: 基于Go Micro框架实现微服务调用
  • 大模型prompt提示词如何调优?
  • 【Python/crawl】如何使用Python爬虫将一系列网页上的同类图片下载到本地
  • Postgresql 连接数查看,死锁问题解决
  • ssm蛋糕甜品商城系统(程序+文档+数据库)
  • 算法空间复杂度计算
  • C++ lambda函数个人理解
  • SwiftUI的context Menu
  • 【数据结构】树与堆 (向上/下调整算法和复杂度的分析、堆排序以及topk问题)
  • 安装CDH平台的服务器磁盘满了,磁盘清理过程记录
  • 《互联网的世界》第七讲-能源
  • 前端代码整洁与规范之CSS篇
  • 在【IntelliJ IDEA】中配置【Tomcat】【2023版】【中文】【图文详解】