package main import . "nc_tools" /* * type ListNode struct{ * Val int * Next *ListNode * } */ /** * * @param head ListNode类 * @param m int整型 * @param n int整型 * @return ListNode类 */ func reverseBetween( head *ListNode , m int , n int ) *ListNode { // write code here start, end := m, n current := head var tmpRes, endNode1 *ListNode for index := 1; index <= end; index++ { if index < start { if index+1 == start { endNode1 = current } current = current.Next continue } tmp := current.Next current.Next = tmpRes tmpRes = current current = tmp } if endNode1 != nil { endNode1.Next = tmpRes } else { head = tmpRes } //找到尾部 if current != nil { tmp := tmpRes for tmp != nil && tmp.Next != nil { tmp = tmp.Next } tmp.Next = current } return head }