package main import . "nc_tools" /* * type ListNode struct{ * Val int * Next *ListNode * } */ /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param head ListNode类 * @param left int整型 * @param right int整型 * @return ListNode类 */ func reverseBetween(head *ListNode, left int, right int) *ListNode { // write code here if left == right { return head } space := right - left dummy := &ListNode{-1, head} i, j := dummy, dummy for t := 0; t < space; t++ { j = j.Next } var prev *ListNode for t := 0; t < left; t++ { prev = i i = i.Next j = j.Next } next := j.Next for i != j { temp := i.Next i.Next = j.Next j.Next = i i = temp } prev.Next = j prev = head head = next return dummy.Next }