重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
本篇内容主要讲解“如何解决反转链表问题”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何解决反转链表问题”吧!
为新兴等地区用户提供了全套网页设计制作服务,及新兴网站建设行业解决方案。主营业务为做网站、网站建设、新兴网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!
问题描述
给你单链表的头指针 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 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) |
到此,相信大家对“如何解决反转链表问题”有了更深的了解,不妨来实际操作一番吧!这里是创新互联网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!