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
}