leetcode-92-反转链表②

题目描述:

方法一:

class Solution:
    def reverseBetween(self, head: ListNode, m: int, n: int) -> ListNode:
        dummy = ListNode(0)
        dummy.next = head
        pre = dummy
        for i in range(m-1):
            pre = pre.next
        start = pre.next
        trail = start.next
        for i in range(n-m):
            start.next = trail.next
            trail.next = pre.next
            pre.next = trail
            trail = start.next
        return dummy.next

 方法二:

找到要翻转部分的链表,将其翻转,再与原链表拼接;

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

class Solution:
    def reverseBetween(self, head: ListNode, m: int, n: int) -> ListNode:
        dummy = ListNode(0)
        dummy.next = head
        pre = dummy
        for i in range(m-1):
            pre = pre.next
        node =None
        cur = pre.next
        for i in range(n-m+1):
            tmp = cur.next
            cur.next = node
            node = cur
            cur = tmp
        pre.next.next = cur
        pre.next = node
        return dummy.next
            

 

posted @ 2019-07-13 15:57  oldby  阅读(85)  评论(0编辑  收藏  举报