LeetCode:翻转链表||(python)

系统 1732 0

1. 题目描述

反转从位置 m 到 n 的链表。请使用一趟扫描完成反转。

说明:
1 ≤ m ≤ n ≤ 链表长度。

示例:

            
              输入: 1->2->3->4->5->NULL, m = 2, n = 4
输出: 1->4->3->2->5->NULL

            
          

2. 思路

题目要求一趟遍历。处理链表的题,一般会生成一个dummy Node,使得dummy Node指向链表的头结点。另外需要先定位到要反转链表的开始节点,并标记开始节点的前一节点,使得在翻转的过程中,始终能找到这一节点。

            
              假设要反转的链表段如下:1—>2—>3
翻转过程如下:
pre—>1—>2—>3
pre—>2—>1—>3
pre—>3—>2—>1

            
          

2.1 代码:

            
              
                class
              
              
                Solution
              
              
                :
              
              
                def
              
              
                reverseBetween
              
              
                (
              
              self
              
                ,
              
               head
              
                :
              
               ListNode
              
                ,
              
               m
              
                :
              
              
                int
              
              
                ,
              
               n
              
                :
              
              
                int
              
              
                )
              
              
                -
              
              
                >
              
               ListNode
              
                :
              
              
        dummyNode 
              
                =
              
               ListNode
              
                (
              
              
                -
              
              
                1
              
              
                )
              
              
                # 先生成一个dummy节点
              
              
        dummyNode
              
                .
              
              
                next
              
              
                =
              
               head
        pre 
              
                =
              
               dummyNode
        
              
                for
              
               i 
              
                in
              
              
                range
              
              
                (
              
              m
              
                -
              
              
                1
              
              
                )
              
              
                :
              
              
            pre 
              
                =
              
               pre
              
                .
              
              
                next
              
              
                # 定位到开始翻转链表的之前一个节点
              
              
        cur 
              
                =
              
               pre
              
                .
              
              
                next
              
              
                for
              
               i 
              
                in
              
              
                range
              
              
                (
              
              m
              
                ,
              
              n
              
                )
              
              
                :
              
              
                # 开始反转
              
              
            temp 
              
                =
              
               cur
              
                .
              
              
                next
              
              
            cur
              
                .
              
              
                next
              
              
                =
              
                temp
              
                .
              
              
                next
              
              
            temp
              
                .
              
              
                next
              
              
                =
              
               pre
              
                .
              
              
                next
              
              
            pre
              
                .
              
              
                next
              
              
                =
              
               temp
        
              
                return
              
               dummyNode
              
                .
              
              
                next
              
            
          

更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论