【Leetcode】24. 两两交换链表中的节点

【Leetcode】24. 两两交换链表中的节点

【Leetcode】24. 两两交换链表中的节点

代码

go 复制代码
/**
 * Definition for singly-linked list.
 * type ListNode struct {
 *     Val int
 *     Next *ListNode
 * }
 */
func swapPairs(head *ListNode) *ListNode {
    // 如果链表为空或者只有一个节点
    if head == nil || head.Next == nil {
        return head
    }
    // 创建虚拟头结点
    dummy := &ListNode{
        Next : head,
    }
    // 三个指针
    pre, cur, ne := dummy, head, head.Next
    for cur != nil {
        // 如果ne为空,则直接return
        if ne == nil {
            break
        }
        // 临时保留ne的下一个节点
        t := ne.Next
        // pre指向ne
        pre.Next = ne
        // ne指向cur
        ne.Next = cur
        // cur指向原本ne的下一个节点
        cur.Next = t

        // pre跳到cur
        pre = cur
        // cur跳到原本ne的下一个节点
        cur = t 
        // 如果cur不为空,则让ne跳到cur的下一个节点
        if cur != nil {
            ne = cur.Next
        }
    }
    // 返回虚拟头节点的下一个节点
    return dummy.Next
}
相关推荐
LWing65139 分钟前
算法基础学习|02归并排序——分治
c++·学习·算法
Normal Developer3 小时前
HotSpot的算法细节
java·jvm·算法
wuqingshun3141595 小时前
蓝桥杯 3. 压缩字符串
数据结构·c++·算法·职场和发展·蓝桥杯
Tanecious.9 小时前
初阶数据结构--排序算法(全解析!!!)
数据结构·算法·排序算法
hu_yuchen10 小时前
C++:Lambda表达式
开发语言·c++·算法
烨然若神人~10 小时前
算法训练营第五天 | 454.四数相加II\ 383. 赎金信\15. 三数之和\ 18. 四数之和
算法
一只鱼^_10 小时前
牛客周赛 Round 91
数据结构·c++·算法·数学建模·面试·贪心算法·动态规划
啊阿狸不会拉杆11 小时前
人工智能数学基础(三):微积分初步
人工智能·python·算法·数学建模
2401_8582861111 小时前
CC52.【C++ Cont】滑动窗口
开发语言·数据结构·c++·算法·leetcode·滑动窗口
mvufi12 小时前
day31 第八章 贪心算法 part05
算法·贪心算法