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 dummy := &ListNode{ Next: head, } length := n-m+1 p,q := dummy,head for m > 1 { p = p.Next q = q.Next m-- } pre,cur := reverse(q,length) p.Next.Next = cur p.Next = pre return dummy.Next } func reverse(head *ListNode,n int) (*ListNode,*ListNode) { var pre,cur *ListNode = nil,head for n > 0 { n-- nxt := cur.Next cur.Next = pre pre = cur cur = nxt } return pre,cur }