LeetCode-24. 两两交换链表中的节点(Golang实现)

LeetCode题号:24. 两两交换链表中的节点

给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。

你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。

 示例 1:

输入:head = [1,2,3,4,5]
输出:[2,1,4,3,5]

示例 2:

输入:head = []
输出:[]

 解题思路:

直接看注释,总结来说就是两个节点调换之后,(A->B来介绍)一定要保证A->Next = B->Next, B->Next = A,然后递归调换即可,注意递归传入的一定是B->Next(既是下个轮回的开始)

func swapPairs(head *ListNode) *ListNode {
	//空直接返回
	if head == nil {
		return nil
	}
	//当个节点直接返回
	if head.Next == nil {
		return head
	}
	// 保存当前节点、当前节点的前置节点,最终返回的必然是第一次交换的head.Next(即:pre)
	curr, pre := head, head.Next
	// 当当前节点被交换到前置节点的位置时,当前节点的next应该是前置节点的Next
	curr.Next = swapPairs(pre.Next)
	// 前后对掉后,前置节点的next应该指向当前节点
	pre.Next = curr

	return pre
}

 往期回顾:

【1】LeetCode-409. 最长回文串(Goland实现)

【2】LeetCode-459. 重复的子字符串(Goland实现)

【3】LeetCode-53. 最大子序和(Goland实现)


❤如果文章对您有所帮助,就在文章的右上角或者文章的末尾点个赞吧!(づ ̄ 3 ̄)づ 

❤如果喜欢大白兔分享的文章,就给大白兔点个关注吧!(๑′ᴗ‵๑)づ╭❤~

❤对文章有任何问题欢迎小伙伴们下方留言或者入群探讨【群号:708072830】

❤鉴于个人经验有限,所有观点及技术研点,如有异议,请直接回复讨论(请勿发表攻击言论)

猜你喜欢

转载自blog.csdn.net/weixin_43970743/article/details/109050017
今日推荐