zoukankan      html  css  js  c++  java
  • 92. 反转链表 II



    方法一:

    class Solution(object):
        def reverseBetween(self, head, m, n):
            """
            :type head: ListNode
            :type m: int
            :type n: int
            :rtype: ListNode
            """
            # 边界处理
            if not head or not head.next or m == n:
                return head
            # 返回值
            ans = ListNode(0)
            ans.next = head
            # 记录第m-1个节点
            pre = ListNode(0)
            for i in range(1, m):
                pre = head
                head = head.next
            # 反转部分的首节点
            prehead = ListNode(0)
            # 记录第n个节点
            pretail = head
            # 开始反转从m到n个节点
            for j in range(m, n + 1):
                temp = head.next
                head.next = prehead
                prehead = head
                head = temp
            # 若不是从首节点开始反转,则拼接前部分未反转的节点
            if m != 1:
                pre.next = prehead
            else:
                ans.next = prehead
            # 若n小于原链表长度,则拼接后部分未反转的节点
            if head:
                pretail.next = head
            return ans.next
    

    方法二:

    class Solution(object):
        def reverseBetween(self, head, m, n):
            """
            :type head: ListNode
            :type m: int
            :type n: int
            :rtype: ListNode
            """
            # 边界处理
            if not head or not head.next or m == n:
                return head
            prehead, cur = None, head
            while m > 1:
                prehead = cur
                cur = cur.next
                m -= 1
                n -= 1
            # one和two分别是遍历指针和前部分不用反转的最后一个节点
            one, two = cur, prehead
            while n:
                temp = cur.next
                cur.next = prehead
                prehead = cur
                cur = temp
                n -= 1
            if two:
                two.next = prehead
            else:
                head = prehead
            one.next = cur
            return head
    
  • 相关阅读:
    RabbitMq(四)远程过程调用RPC
    RabbitMq(三)交换机类型
    RabbitMq(二)工作队列
    java基础知识01--JAVA准备
    匿名子类
    网络之Socket详解
    网络之Socket、TCP/IP、Http关系分析
    Eclipse搭建springboot项目(九)常用Starter和整合模板引擎thymeleaf
    Vue学习——Router传参问题
    sql函数——find_in_set()
  • 原文地址:https://www.cnblogs.com/panweiwei/p/12857070.html
Copyright © 2011-2022 走看看