美文网首页
92. Reverse Linked List II 细节题

92. Reverse Linked List II 细节题

作者: 羲牧 | 来源:发表于2020-05-29 02:46 被阅读0次

case很多,值得再次琢磨

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution:
    def reverseBetween(self, head: ListNode, m: int, n: int) -> ListNode:
        if head is None or head.next is None or m >= n:
            return head
        delta = n - m
        dummy = ListNode()
        dummy.next = head
        
        p = dummy
        q = head
        r = head.next
        right = head
        #p指向第m-1个节点,q指向需要调整的节点,r指向需要调整节点的下一个节点,right指向第m个节点,也就是n+1之后节点的头节点
        counter = 0
        while r and counter < n:
            if counter < m - 1:
                p = p.next
                r = r.next
                q = q.next
            else:
                if counter == m - 1:
                    right = q
                    q = r
                    r = r.next
                if m-1 < counter < n:
                    q.next = p.next
                    p.next = q
                    q = r
                    r = r.next
                
            counter += 1
        right.next = q
        if counter < n:
            if r is None:
                right.next = None
            # righ.next = None
            q.next = p.next
            p.next = q
        return dummy.next
        
            
            
            
        
            
        
        
            
            
            
        
            
        

相关文章

网友评论

      本文标题:92. Reverse Linked List II 细节题

      本文链接:https://www.haomeiwen.com/subject/fwytzhtx.html