• 24. 两两交换链表中的节点


    题目:

    给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。

    你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。

    示例 1:

    输入:head = [1,2,3,4]
    输出:[2,1,4,3]


    示例 2:

    输入:head = []
    输出:[]


    示例 3:

    输入:head = [1]
    输出:[1]
     

    提示:

    链表中节点的数目在范围 [0, 100] 内
    0 <= Node.val <= 100

    解答:

    自己的代码,使用三个ListNode*,pFront,p1,p2,三个节点的交换逻辑如下:

    //swap
    pFront->next = p2->next;
    p2->next = p1;
    p1->next = pFront->next;
    pFront->next = p2;

    //24. 两两交换链表中的节点
    ListNode* swapPairs(ListNode* head) 
    {
        if (head == nullptr)
            return nullptr;
    
        ListNode dummy;
        dummy.next = head;
    
        ListNode*pFront = &dummy;
        ListNode* p1 = pFront->next, *p2=nullptr;
        while (pFront != nullptr)
        {
            p1 = pFront->next;
            if (p1 == nullptr)
                break;
    
            p2 = p1->next;
            if (p2 == nullptr)
                break;
    
            //swap
            pFront->next = p2->next;
            p2->next = p1;
            p1->next = pFront->next;
            pFront->next = p2;
    
            //next
            pFront = p2->next;
        }
    
        return dummy.next;
    }

    一次提交后超过100%,好开心O(∩_∩)O哈哈~

    题解:https://leetcode-cn.com/problems/swap-nodes-in-pairs/solution/liang-liang-jiao-huan-lian-biao-zhong-de-jie-di-91/

    题解中提供了两种解法:递归,迭代,自己写的思路与迭代思路类似。(自己都过了,题解就不看了哈)

  • 相关阅读:
    C# 解析 json
    鸡汤一则
    jsp 环境配置记录
    jquery validate 自定义验证方法
    axure rp pro 7.0(页面原型工具)
    跨数据库服务器查询步骤
    .net 直接输出远程文件到浏览器和下载文件保存到本机
    URL中文乱码处理总结(转)
    使用ajax上传中遇到的问题
    Web 通信 之 长连接、长轮询(转)
  • 原文地址:https://www.cnblogs.com/zyk1113/p/13994424.html
Copyright © 2020-2023  润新知