首页 > 其他分享 >力扣 中等 92.反转链表 II

力扣 中等 92.反转链表 II

时间:2024-09-28 10:47:38浏览次数:10  
标签:II p0 ListNode cur 反转 next 链表 力扣 节点

文章目录

题目介绍

在这里插入图片描述

题解

在这里插入图片描述

class Solution {
    public ListNode reverseBetween(ListNode head, int left, int right) {
        // 创建一个哑节点,它的 next 指向头节点,方便处理
        ListNode dummy = new ListNode(0, head);
        // p0 用于指向反转部分的前一个节点
        ListNode p0 = dummy;
        // 移动 p0 到反转部分的前一个节点
        for (int i = 0; i < left - 1; i++) {
            p0 = p0.next;
        }
        ListNode cur = p0.next, pre = null;
        // 执行反转
        for (int i = 0; i < right - left + 1; i++) {
            ListNode next = cur.next;
            cur.next = pre;
            pre = cur;
            cur = next;
        }
        // 反转完之后,cur 指向需要反转部分的下一个节点
        // pre指向需要反转部分的最后一个节点
        // 此时 p0.next 还和原来一样,指向未反转时需要反转的第一个节点
        p0.next.next = cur;
        p0.next = pre;
        // 返回哑节点的下一个节点,即头节点
        return dummy.next;
    }
}

标签:II,p0,ListNode,cur,反转,next,链表,力扣,节点
From: https://blog.csdn.net/qq_51352130/article/details/142500494

相关文章

  • 算法题:用队列实现一个链表
    下面是添加了注释的ListNode类和LinkedListQueue类,以帮助理解每个部分的功能和目的://定义链表节点类,用于存储队列中的元素classListNode{intval;//存储节点的值ListNodenext;//指向下一个节点的指针//构造函数,用于创建新的节点ListNod......
  • 19. 删除链表的倒数第 N 个结点
    相当于删除正数第n个节点classSolution{public:ListNode*removeNthFromEnd(ListNode*head,intn){if(!head)returnhead;intlistLength=0;ListNode*temp=head;while(temp){temp=temp->next;......
  • 物联网系统中基于IIC通信的数字温度传感器测温方案
    01物联网系统中为什么要使用数字式温度传感器芯片物联网系统中使用数字式温度传感器芯片的原因主要有以下几点:高精度与稳定性高精度测量:数字式温度传感器芯片,如DS18B20,采用芯片集成技术,能够有效抑制外界不同程度的干扰,从而提供高精度的温度测量。这对于物联网系统来说至关......
  • 【算法题】72. 编辑距离-力扣(LeetCode)
    【算法题】72.编辑距离-力扣(LeetCode)1.题目下方是力扣官方题目的地址72.编辑距离给你两个单词word1和word2,请返回将word1转换成word2所使用的最少操作数。你可以对一个单词进行如下三种操作:插入一个字符删除一个字符替换一个字符示例1:输入:word1="ho......
  • 8,(经典面试题:分组求topN)Python数分之Pandas训练,力扣,1532. 最近的三笔订单
    学习:知识的初次邂逅复习:知识的温故知新练习:知识的实践应用目录一,原题力扣链接二,题干三,建表语句四,分析五,Pandas解答六,验证七,知识点总结一,原题力扣链接.-力扣(LeetCode)二,题干表:Customers+---------------+---------+|ColumnName|Type|+------......
  • 26,【经典大厂面试题】【连续问题的困难题】Python数分之Pandas训练,力扣,2173. 最多连胜
    学习:知识的初次邂逅复习:知识的温故知新练习:知识的实践应用目录一,原题力扣链接二,题干三,建表语句四,分析五,SQL解答六,验证七,知识点总结一,原题力扣链接.-力扣(LeetCode)二,题干表: Matches+-------------+------+|ColumnName|Type|+-------------+-----......
  • 使用双向链表和哈希表实现LRU缓存
    在日常开发中,缓存是一个非常常见且重要的技术手段,能够显著提升系统性能。为了保证缓存的有效性,需要实现一种机制,在缓存空间不足时,能够自动淘汰最久未被使用的数据。这种机制就是**LRU(LeastRecentlyUsed,最近最少使用)**算法。一、LRU缓存的原理LRU是一种常用的缓存淘汰策......
  • 环形链表的约瑟夫问题
    一:题目二:思路前提:该题已经声明了结构体,只是看不见,声明如下:因为是从0开始实现:1:创建一个n个节点的循环链表,其值为1~n(假设n=5)如图:代码如下: structListNode*newnode=(structListNode*)malloc(sizeof(structListNode)); if(newnode==NULL) { perror("mal......
  • 数据结构编程实践20讲(Python版)—02链表
    本文目录02链表linked-listS1说明S2示例单向链表双向链表循环链表S3问题:反转单向链表求解思路Python3程序S4问题:双向链表实现历史浏览网页求解思路Python3程序S5问题:基于循环链表的玩家出牌顺序求解思路Python3程序往期链接01数组02链表linked-lis......
  • Leetcode 154. 寻找旋转排序数组中的最小值 II
    1.题目基本信息1.1.题目描述已知一个长度为n的数组,预先按照升序排列,经由1到n次旋转后,得到输入数组。例如,原数组nums=[0,1,4,4,5,6,7]在变化后可能得到:若旋转4次,则可以得到[4,5,6,7,0,1,4]若旋转7次,则可以得到[0,1,4,4,5,6,7]注意,数组[a[0],a[1],a[2],......