golang力扣leetcode 24.两两交换链表中的节点

24.两两交换链表中的节点

24.两两交换链表中的节点

24.两两交换链表中的节点

题解

两种解法,第一种递归第二种迭代,链表题建议画图做

代码

package main

type ListNode struct {
	Val  int
	Next *ListNode
}

func swapPairs1(head *ListNode) *ListNode {
	if head == nil || head.Next == nil {
		return head
	}
	newHead := head.Next
	newHeadNext := newHead.Next
	newHead.Next = head
	head.Next = swapPairs1(newHeadNext)
	return newHead
}
func swapPairs2(head *ListNode) *ListNode {
	dummy := &ListNode{0, head}
	cnt := dummy
	for cnt.Next != nil && cnt.Next.Next != nil {
		node1 := cnt.Next
		node2 := cnt.Next.Next
		cnt.Next = node2
		node1.Next = node2.Next
		node2.Next = node1
		cnt = node1
	}
	return dummy.Next
}

上一篇:LeetCode刷题笔记 Java 腾讯 链表 合并K个排序链表


下一篇:LeetCode刷题笔记 Java 腾讯 链表 两数相加