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

链表内指定区间反转

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
}

全部评论

相关推荐

买蜜雪也用卷:我觉得应该没有哪个人敢说自己熟练使用git,代码分支一复杂还是得慢慢寻思一下的,不过基本的拉代码提交代码还有分支什么的是应该会
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务