题解 | #链表内指定区间反转#

链表内指定区间反转

https://www.nowcoder.com/practice/b58434e200a648c589ca2063f1faf58c

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 {
	dummyNode := &ListNode{
		Next: head,
	}

	prevHead := dummyNode
	for i := 0; i < m-1; i++ {
		prevHead = prevHead.Next
	}
	mHead := prevHead.Next
	// 1 -> 2 -> 3 -> 4 -> 5
	// prevHead -> 1
	// mHead -> 2
	for i := 0; i < n-m; i++ {
		temp := mHead.Next     // 3
		mHead.Next = temp.Next // 将3移除  1 -> 2 -> 4 -> 5
		temp.Next = prevHead.Next // 将 3 放入prevHead 与 mHead 之间  即 3 -> 2
        prevHead.Next = temp
	}
	return dummyNode.Next
}

全部评论

相关推荐

03-26 13:44
南华大学 Java
在看面经的花生米很野蛮:这种情况下你当然要回答,你也是吗!!!!我超喜欢他的XXXXX
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务