力扣24. 两两交换链表中的节点

Problem: 24. 两两交换链表中的节点

题目描述

在这里插入图片描述在这里插入图片描述

思路

1.创建虚拟头节点dummy和尾指针tial指向dummy;创建指针p指向head
2.当head不为空同时head -> next 不为空时:

2.1.创建指针nextP指向p -> next -> next;
2.2.tial指向p -> next同时将p -> next置空;tial指针后移、p -> next -> next置空
2.3.tail指向p,同时p->next置空,tail指针后移;将p指向nextp;
2.4.若链表的长度为奇数,则最后p不为空则p->next为空,则直接让tail指向p并返回dummy -> next;

复杂度

时间复杂度:

O ( n ) O(n) O(n);其中 n n n是链表的长度

空间复杂度:

O ( n ) O(n) O(n)

Code

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode() : val(0), next(nullptr) {}
 *     ListNode(int x) : val(x), next(nullptr) {}
 *     ListNode(int x, ListNode *next) : val(x), next(next) {}
 * };
 */
class Solution {
public:
    /**
     *
     * @param head The head node of linked list
     * @return ListNode*
     */
    ListNode* swapPairs(ListNode* head) {
        ListNode* dummy = new ListNode(INT_MIN);
        ListNode* tail = dummy;
        ListNode* p = head;
        while (p != nullptr && p -> next != nullptr) {
            ListNode* nextP = p -> next -> next;
            tail -> next = p -> next;
            tail = tail -> next;
            p -> next -> next = nullptr;
            tail -> next = p;
            p -> next = nullptr;
            tail = tail -> next;
            p = nextP;
        }
        //If the list length is odd, the last node is added to the resulting list
        if (p != nullptr) {
            tail -> next = p;
        }
        return dummy -> next;
    }
};

相关推荐

  1. 24-交换节点

    2024-04-04 05:42:04       65 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-04 05:42:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-04 05:42:04       101 阅读
  3. 在Django里面运行非项目文件

    2024-04-04 05:42:04       82 阅读
  4. Python语言-面向对象

    2024-04-04 05:42:04       91 阅读

热门阅读

  1. 算法练习----力扣每日一题------6

    2024-04-04 05:42:04       36 阅读
  2. Android 全局配置Gradle依赖及插件仓库

    2024-04-04 05:42:04       38 阅读
  3. Python 正则表达式(re)

    2024-04-04 05:42:04       37 阅读
  4. Android音视频开发 - MediaMetadataRetriever 相关

    2024-04-04 05:42:04       33 阅读
  5. 站群服务器如何提高搜索引擎排名

    2024-04-04 05:42:04       37 阅读
  6. Spring Boot+Spring Security6的配置方法

    2024-04-04 05:42:04       29 阅读
  7. 使用IntelliJ IDEA配置版本管理(SVN和Git)

    2024-04-04 05:42:04       37 阅读
  8. flutter中的ListView单元测试

    2024-04-04 05:42:04       29 阅读
  9. Elasticsearch-桶聚合查询详解

    2024-04-04 05:42:04       31 阅读
  10. AWS相关服务说明

    2024-04-04 05:42:04       37 阅读