题目链接:BM2 链表内指定区间反转
题目描述:
思路:思路很简单,先定义一个指针,让它走m-1步到第m-1个的位置,然后反转 [m, n]区间内的链表,将其接到前半段中就可以了。
代码·:
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 {
if head == nil || head.Next == nil {
return head
}
res := &ListNode{Next: head}
pre := res
for i := 1; i < m; i++ { //先走到第m个的位置
pre = pre.Next
}
cur := pre.Next // 记录后面部分
for i := m;i < n ;i++ { //反转m-n区间的链表
temp := cur.Next
cur.Next = temp.Next
temp.Next = pre.Next
pre.Next = temp
}
return res.Next
}