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

剑指 Offer II 024. 反转链表

题目链接

剑指 Offer II 024. 反转链表 easy

题目描述

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

示例 1:

在这里插入图片描述

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

示例 2:

这里是引用

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

示例 3:

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

提示:

  • 链表中节点的数目范围是 [0,5000][0, 5000][0,5000]
  • −5000≤Node.val≤5000-5000 \leq Node.val \leq 50005000Node.val5000

分析:模拟

我们用 cur指向 当前结点 ,用 pre指向当前结点的 前驱节点 , 用 nextNode指向当前结点的 后继结点

在这里插入图片描述
cur的下一个结点指向 pre。接着再让 pre指向当前结点 cur,让cur指向 nextNode

在这里插入图片描述

一直这样操作,直到 cur指向 null此时的 pre指向的就是反转后的链表头节点,直接返回即可。

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

C++代码:

/*** 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 *pre = nullptr , *cur = head;while(cur != nullptr){ListNode *nextNode = cur->next;cur->next = pre;pre = cur;cur = nextNode;}return 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:pre , cur = None , headwhile cur != None:nextNode = cur.nextcur.next = prepre = curcur = nextNodereturn pre
http://www.lryc.cn/news/37029.html

相关文章:

  • 从Linux内核中学习高级C语言宏技巧
  • 详解Python的装饰器
  • k8s-Pod域名学习总结
  • 0405习题总结-不定积分
  • QT 常用控件类型命名参考
  • MATLAB与图像处理的那点小事儿~
  • 第十四届蓝桥杯模拟赛(第三期)Java组个人题解
  • Go语言之条件判断循环语句(if-else、switch-case、for、goto、break、continue)
  • 深入理解AQS
  • JVM学习笔记十:执行引擎
  • 【2023-03-10】JS逆向之美团滑块
  • 全志V853芯片放开快启方案打印及在快起方式下配置isp led的方法
  • 大数据 | (一)Hadoop伪分布式安装
  • Django/Vue实现在线考试系统-06-开发环境搭建-Django安装
  • KaiwuDB 时序引擎数据存储内存对齐技术解读
  • IR 808 Alkyne,IR-808 alkyne,IR 808炔烃,近红外吲哚类花菁染料
  • elasticsearch
  • 并发编程---java锁
  • 品牌营销 | 学习如何最大限度地发挥品牌营销的作用
  • Linux驱动的同步阻塞和同步非阻塞
  • LearnOpenGL-光照-5.投光物
  • 【C语言】每日刷题 —— 牛客语法篇(1)
  • 【深度学习】Subword Tokenization算法
  • 五分钟了解支付、交易、清算、银行等专业名词的含义?
  • 4个工具,让 ChatGPT 如虎添翼!
  • 初识PO、VO、DAO、BO、DTO、POJO时
  • [2.2.4]进程管理——FCFS、SJF、HRRN调度算法
  • 【代码随想录Day55】动态规划
  • Java开发 - 消息队列前瞻
  • MySQL连接IDEA详细教程