如何解决反转链表问题

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

为新兴等地区用户提供了全套网页设计制作服务,及新兴网站建设行业解决方案。主营业务为做网站、网站建设、新兴网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!

问题描述

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

 

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


当前文章:如何解决反转链表问题
标题URL:http://ybzwz.com/article/gppdpi.html