【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
}
相关推荐
^yi34 分钟前
【Linux系统编程】进程状态的理解
算法·僵尸进程·孤儿进程·进程状态·挂起状态·阻塞状态
冻柠檬飞冰走茶1 小时前
PTA基础编程题目集 7-7 12-24小时制(C语言实现)
c语言·开发语言·数据结构·算法
长不胖的路人甲2 小时前
二叉排序树(BST)Java 完整实现 + 删除思路详解
java·开发语言·算法
geovindu2 小时前
python: Breadth First Search Algorithm and Depth First Search Algorithm
开发语言·后端·python·算法·搜索算法
长不胖的路人甲2 小时前
可达性分析法(根搜索算法)完整详解
java·jvm·算法
runafterhit2 小时前
python基础语法命令(C程序员刷leetcode)
c语言·python·leetcode
paeamecium2 小时前
【PAT甲级真题】- Kuchiguse (20)
数据结构·c++·python·算法·pat考试·pat
青山木2 小时前
Hot 100 --- 全排列
java·数据结构·算法·leetcode·深度优先
海兰2 小时前
【高速缓存】RedisVL 存储类型选择指南:Hash 与 JSON
人工智能·redis·算法·缓存·json·哈希算法
KaMeidebaby2 小时前
卡梅德生物技术快报|核酸适配体文库筛选:核酸适配体文库筛选全流程技术解析:NGS与AI辅助方案的设计与实践
前端·人工智能·物联网·算法·百度