温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何解决反转链表问题

发布时间:2021-10-14 13:41:53 来源:亿速云 阅读:139 作者:iii 栏目:编程语言

本篇内容主要讲解“如何解决反转链表问题”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何解决反转链表问题”吧!

问题描述

给你单链表的头指针 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]

解决方案

首先创建一个空节点指向head,两个指针同时遍历,并用tmp记录当前节点的下一个节点用两个指针遍历整个链表,首先找到left的位置,当当前节点小于target时继续让当前节点指向下一个节点,直到找到left的位置,找到left的位置时便可使用头插法将left后面的元素直到right插入到left前面

以示例1为例子:

1.初始状态

如何解决反转链表问题

2.第一轮变换

如何解决反转链表问题

如何解决反转链表问题


3.第三轮变换

如何解决反转链表问题

如何解决反转链表问题

代码清单

 

 p1=ListNode(0)#创建空节点

        x=p1

        p1.next=head

        p=head#定义当前节点

        i=1#用于判断与left的关系

        while i <left:#当没有找到left时,继续指向下一个节点

            p1=p1.next

            p=p.next

            i=i+1

        while i < right:#找到left时用头插法进行插入

            tmp=p.next#记录当前节点的下一个节点

            p.next=tmp.next

            tmp.next=p1.next

            p1.next=tmp

            i=i+1

        print( x.next)

 


到此,相信大家对“如何解决反转链表问题”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI