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

mac2022-07-05  27

链接

题目.

难度:

middle意思

解答:

其实就是简单的链表操作,不要试图去玩高级的,多定义几个变量tmp0,tmp1逻辑会清晰很多

package main import ( "fmt" ) type ListNode struct { Val int Next *ListNode } func printList(root *ListNode) { num := 0 for root != nil { fmt.Printf("->%d", root.Val) root = root.Next num++ if num > 20 { break } } fmt.Println("....") } func swapPairs(head *ListNode) *ListNode { if head == nil || head.Next == nil { return head } newl := &ListNode{} tail := newl for head != nil && head.Next != nil { tmp0, tmp1 := head, head.Next head = head.Next.Next tail.Next = tmp1 tail.Next.Next = tmp0 tail = tmp0 } tail.Next = head return newl.Next } func main() { l := &ListNode{ Val: 1, Next: &ListNode{ Val: 2, Next: &ListNode{ Val: 3, Next: &ListNode{ Val: 4, }, }, }, } printList(swapPairs(l)) }

复杂度分析

time

O(n)

space

O(1)

执行结果

执行用时 :0 ms, 在所有 Go 提交中击败了100.00%的用户 内存消耗 :2.1 MB, 在所有 Go 提交中击败了51.94%的用户

最新回复(0)