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

链表内指定区间反转

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
}

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务