// 反转链表IIpackage linkedlist
/**
* Definition for singly-linked list.
* type ListNode struct {
* Val int
* Next *ListNode
* }
*/// https://www.bilibili.com/video/BV1sd4y1x7KN/?vd_source=9c5be9823bfed8ae9daa5a0b4df1ac32// 灵茶山艾府funcReverseBetween(head *ListNode, left int, right int)*ListNode {
dummy :=&ListNode{Next: head}
p0 := dummy
for i :=0; i < left-1; i++{
p0 = p0.Next
}var pre, cur *ListNode =nil, p0.Next
for i :=0; i < right-left+1; i++{
nxt := cur.Next
cur.Next = pre // 每次循环只修改一个 Next,方便大家理解
pre = cur
cur = nxt
}// 见视频
p0.Next.Next = cur
p0.Next = pre
return dummy.Next
}funcCreateLinkedList(values []int)*ListNode {iflen(values)==0{returnnil}
head :=&ListNode{Val: values[0]}
current := head
for i :=1; i <len(values); i++{
current.Next =&ListNode{Val: values[i]}
current = current.Next
}return head
}