Skip to content

【LeetCode】24. 两两交换链表中的节点 #117

@WGrape

Description

@WGrape

介绍

给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。

image

解题

func swapPairs(head *ListNode) *ListNode {
    // 思路:将链表翻转转化为一个子问题,然后通过递归方式依次解决
    // 先翻转两个,然后将后面的节点继续这样翻转,然后将这些翻转后的节点连接起来
    return helper(head)
}
func helper(head *ListNode)*ListNode{
    if head==nil||head.Next==nil{
        return head
    }
    // 保存下一阶段的头指针
    nextHead:=head.Next.Next
    // 翻转当前阶段指针
    next:=head.Next
    next.Next=head
    head.Next=helper(nextHead)
    return next
}

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions