本篇内容主要讲解“如何解决反转链表问题”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何解决反转链表问题”吧!
问题描述
给你单链表的头指针 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)
|
到此,相信大家对“如何解决反转链表问题”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。