LeetCode 92 [Reverse Linked List II]

原题

翻转链表中第m个节点到第n个节点的部分
注意事项
m,n满足1 ≤ m ≤ n ≤ 链表长度

样例
给出链表1->2->3->4->5->null, m = 2 和n = 4,返回1->4->3->2->5->null

解题思路

  • 同Reverse Linked List相似,首先找到四个关键的preM, M, N, postN

完整代码

# Definition for singly-linked list.
# class ListNode(object):
#     def __init__(self, x):
#         self.val = x
#         self.next = None

class Solution(object):
    def reverseBetween(self, head, m, n):
        """
        :type head: ListNode
        :type m: int
        :type n: int
        :rtype: ListNode
        """
        if m == n:
            return head
        dummy = ListNode(0)
        dummy.next = head
        prevmNode, nNode = dummy, dummy
        for i in range(m - 1):
            prevmNode = prevmNode.next
        for i in range(n):
            nNode = nNode.next
            
        mNode = prevmNode.next
        postnNode = nNode.next
        prev = postnNode
        for _ in range(n - m + 1):
            temp = mNode.next
            mNode.next = prev
            prev = mNode
            mNode = temp
        prevmNode.next = nNode
        
        return dummy.next
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容