题目描述:
方法一:
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
原文:https://www.cnblogs.com/oldby/p/11180942.html