【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
}
相关推荐
潇洒畅想9 小时前
1.2 希腊字母速查表 + 公式阅读实战
java·人工智能·python·算法·rust·云计算
weixin_513449969 小时前
EXTREME-PARKOUR项目学习记录
人工智能·学习·算法·机器人
测绘第一深情9 小时前
MapQR:自动驾驶在线矢量化高精地图构建的端到端 SOTA 方法
数据结构·人工智能·python·神经网络·算法·机器学习·自动驾驶
Magic--9 小时前
C++ 智能指针
开发语言·c++·算法
Timer@9 小时前
LangChain 教程 05|模型配置:AI 的大脑与推理引擎
人工智能·算法·langchain
sali-tec9 小时前
C# 基于OpenCv的视觉工作流-章50-霍夫找圆
图像处理·人工智能·opencv·算法·计算机视觉
想带你从多云到转晴9 小时前
04、数据结构与算法---双向链表
java·数据结构·算法·链表
穿条秋裤到处跑9 小时前
每日一道leetcode(2026.04.11):三个相等元素之间的最小距离 II
算法·leetcode
Lsk_Smion10 小时前
Hot100(开刷) 之 长度最小的数组--删除倒数第N个链表--层序遍历
java·数据结构·算法·kotlin
luoganttcc10 小时前
dim3 grid_size(2, 3, 4); dim3 block_size(4, 8, 4)算例
算法