这个是排行榜上的解法,其亮点在于使用了“虚拟头节点”(res)避免了许多空节点和边缘情况,减少了复杂的条件判断。虚拟节点和反转链表时使用的temp节点不是一个东西。虚拟节点处理的问题包括第一个节点在交换区间的情况。res一开始指向的是head,但在定义pre指针时,pre一开始定义在了res上。则在后面的交换过程中,改变pre的next其实有包括改变res的指向。需要注意的是,这个改变也包括在巧妙的循环控制中,当m=1时,第一个循环是不会执行的。 class Solution: def reverseBetween(self , head: ListNode, m: int, n: ...