题目.
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)) }O(n)
O(1)
执行用时 :0 ms, 在所有 Go 提交中击败了100.00%的用户 内存消耗 :2.1 MB, 在所有 Go 提交中击败了51.94%的用户