前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >算法创作|反转链表问题解决方法

算法创作|反转链表问题解决方法

作者头像
算法与编程之美
发布2021-04-22 14:52:16
3660
发布2021-04-22 14:52:16
举报
文章被收录于专栏:算法与编程之美

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

结语

本篇主要解决了链表反转的问题,其中核心思想为头插法,利用头插法可以帮助我们很快的解决链表反转的问题,同时头插法作用很大,可以帮助我们解决很多的有关链表的问题,在我们以后遇到关于链表问题时都可以考虑是否能用到头插法,所以对于头插法我们需要取熟练的掌握并且运用,对我们的编程能力会有很大的提升

实习编辑:衡辉

作者:邓斯丹 陈文杰 李俭

稿件来源:深度学习与文旅应用实验室(DLETA)

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-04-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 算法与编程之美 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档