zoukankan      html  css  js  c++  java
  • 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/

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

  • 相关阅读:
    JQuery图片预览
    1.数组
    1.什么是C++
    安装PHPCMS 遇到的问题(fsockpen)
    解决采集时提示”没有找到网址列表,请先进行网址采集“的问题
    JAVA 常用的网站
    页面静态化
    我的C笔记系列一
    PHP缓存技术
    PHPCMS 采集规则
  • 原文地址:https://www.cnblogs.com/zyk1113/p/13994424.html
Copyright © 2011-2022 走看看