leetcode链表问题_反转一个单链表

leetcode链表问题_反转一个单链表给你单链表的头指针 head 和两个整数 left 和 right ,其中 left <= right 。请你反转从位置 left 到位置 right 的链表节点,返回 反转后的链表 。示例 1:输入:head = [1,2,3,4,5], left = 2, right = 4输出:[1,4,3,2,5]示例 2:输入:head = [5], left = 1, right = 1输出:[5] 提示:链表中节点数目为 n1 <= n <= 500-500

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

给你单链表的头指针 head 和两个整数 left 和 right ,其中 left <= right 。请你反转从位置 left 到位置 right 的链表节点,返回 反转后的链表 。
在这里插入图片描述

示例 1:


输入:head = [1,2,3,4,5], left = 2, right = 4
输出:[1,4,3,2,5]
示例 2:

输入:head = [5], left = 1, right = 1
输出:[5]
 

提示:

链表中节点数目为 n
1 <= n <= 500
-500 <= Node.val <= 500
1 <= left <= right <= n

进阶: 你可以使用一趟扫描完成反转吗?

题解
找到left前继,right和后记,然后对于[left,right]中的区域进行头插法。最后判断pre是否有值。

/** * 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* reverseBetween(ListNode* head, int left, int right) { 
   
        if(left == right)return head;
        int num = 1;
        ListNode *pre = NULL,*end = NULL;
        ListNode * t = head;
        ListNode * a = NULL;
        while(num < left){ 
   
            if(num == left - 1)pre = t;
            num ++;
            t= t->next;
        }
        a = t;
        ListNode * tt = new ListNode(0,NULL);
        while(num <= right){ 
   
            ListNode * temp = t->next;
            t->next = tt->next;
            tt->next = t;
            t = temp;
            num ++;
        }
        end = t;
        a->next = end;
        if(pre != NULL)pre->next = tt->next;
        else return tt->next;
        return head;

    }
};
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/168840.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 关于Http_build_query的用法

    关于Http_build_query的用法

    2021年11月8日
    48
  • USB转232和485的区别

    1串口串口,即串行通信接口,与之相对应的另一种接口叫并口,并行接口。两者的区别是,传输一个字节(8个位)的数据时,串口是将8个位排好队,逐个地在1条连接线上传输,而并口则将8个位一字排开,分别在8条连接线上同时传输,也就是进行数据传输的接口串口是一种物理接口形式,(硬件)通常指COM接口,当然这些接口有着很多标准接口标准:串口通信的接口标准有很多,而我们所了解的RS-23…

    2022年4月7日
    80
  • linux同时启动两个Tomcat[通俗易懂]

    linux同时启动两个Tomcat[通俗易懂]编辑环境变量:vim/etc/profile 在文件末尾复制粘贴即可##########firsttomcat###########CATALINA_BASE=/opt/tomcatCATALINA_HOME=/opt/tomcatTOMCAT_HOME=/opt/tomcatexportCATALINA_BASECATALINA_HOMETOMCAT_HO

    2022年6月16日
    58
  • kafka集群搭建及简单使用

    kafka集群搭建及简单使用KafkaKafka是最初由Linkedin公司开发,是一个分布式、支持分区的(partition)、多副本的(replica),基于zookeeper协调的分布式消息系统,它的最大的特性就是可以实时的处理大量数据以满足各种需求场景:比如基于hadoop的批处理系统、低延迟的实时系统、storm/Spark流式处理引擎,web/nginx日志、访问日志,消息服务等等,用scala语言编写,Li…

    2022年6月10日
    36
  • Java安全之RMI协议分析

    Java安全之RMI协议分析0x00前言在前面其实有讲到过RMI,但是只是简单描述了一下RMI反序列化漏洞的利用。但是RMI底层的实现以及原理等方面并没有去涉及到,以及RMI的各种攻击方式。在其

    2021年12月12日
    54
  • 最新CSGO国服能取回皮肤的国内开箱网站推荐大全

    最新CSGO国服能取回皮肤的国内开箱网站推荐大全最新CSGO国服能取回皮肤的国内开箱网站推荐大全incsgo可直接取回最好的国内CSGO饰品皮肤开箱网站官方链接:www.incsgo.gg注册登录自动免费获得$1.00美金取回状态:直接取回优惠码:csgogo(充值使用csgogo可增加5%充值金额)farlucky官网可直接取回CSGO饰品皮肤网页开箱网站官方链接:skinsdog.cc邀请码:csgo(注册使用可在首页免费开箱)88hash全网独家开箱皮肤立刻取回的csgo开箱网站官方链接:www..

    2022年10月5日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号