python题解
首先找到n和m的位置,然后逆转,之后输出:
class ListNode: def __init__(self, x): self.val = x self.next = None class Solution: def reverseBetween(self , head , m , n ): if m==n:return head #题目中虽然限制了m和n的条件,节约了我们的代码,但是存在m==n的情况 tmp = ListNode(None) tmp2 = head tmp.next = tmp2 for i in range(m-1):#找到第n个位置 tmp = tmp.next tmp2 = tmp2.next for i in range(n-m):#逆转m to n的链表 tmp3 = tmp2.next tmp2.next = tmp3.next tmp3.next = tmp.next tmp.next = tmp3 if m==1:return tmp.next #没有这个条件会卡在30% else :return head
还有一个方法我觉的很好用,
- 写一个reverse(),逆序链表
- 可以将链表分为三段,将需要逆序的链表传过去
- 组合返回