题解 | #链表内指定区间反转#

链表内指定区间反转

https://www.nowcoder.com/practice/b58434e200a648c589ca2063f1faf58c

# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = None
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 
# @param head ListNode类 
# @param m int整型 
# @param n int整型 
# @return ListNode类
#
class Solution:
    def reverseBetween(self , head: ListNode, m: int, n: int):
        head_0 = head
        head__1 = ListNode(0)
        head__1.next = head_0

        head = head__1
        for i in range(m-1):
            head = head.next 

        # 1.遍历到第m-1个节点,2.保留m-1个节点的信息pre_0,3.记录下下一个节点的信息,4.滑动至下一个节点         
        pre_0 = head
        next = head.next    
        head = next

        # 1.保留该节点信息pre, 2.保留下一个节点的信息next,3.滑至下一个节点
        pre = head
        next = head.next
        head = next

        # 1.保留下一个节点的信息next,2.将该节点的next连接至上一个节点pre, 3.保留该节点的信息至pre,4.滑至下一个节点
        for i in range(n-m):
            next = head.next
            head.next = pre
            pre = head
            head = next
        # 1.保留下一个节点的信息next,2.将该节点的next连接至上一个节点pre, 3.保留该节点的信息至pre,4.滑至下一个节点
        #……
        # 1.遍历到第n个节点,2.保留下一个节点的信息next,3将该节点的next连接至上一个节点pre,4.保留该节点的信息至pre,5.将pre_0_next_next指向next,6.将pre_0_next指向pre. 7.结束。
        pre_0.next.next = next
        pre_0.next = pre
     
        return head__1.next

全部评论

相关推荐

卡卡罗特ovo:说起云智我就来气,约好了一面,结果面试官没来,ssob上问hr也未读,我还是专门请了半天假在家面试,恶心死了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务