leetcode24. 两两交换链表中的节点

题目描述

给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。

示例 1:

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

示例 2:

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

示例 3:

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

提示:

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

思路分析

每次我自己想的时候,都考虑很多很多种情况。不如拿出两个或者四个节点,草稿纸上演示一遍它的具体流程,同时也能够判断while循环的终止条件。
1、首先会想到使用一个dummyHead
2、判断终止条件的时候,分奇数和偶数,进而退出,cur->next!=nullptr 并且 cur->next->next!=nullptr(顺序也不能反)
3、想到了使用tmp保存节点cur->next,为什么不能想到tmp1保存cur->next->next->next
4、演示一遍流程,代码自然就写出来了。

/**
 * 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:
    ListNode* swapPairs(ListNode* head) {
   
        ListNode* dummyHead = new ListNode(0); // 设置一个虚拟头结点
        dummyHead->next = head;
        ListNode* cur = dummyHead;
        while(cur->next!=nullptr && cur->next->next!=nullptr){
    // 终止条件是两个(奇数和偶数)
            ListNode* tmp = cur->next;
            ListNode* tmp1 = cur->next->next->next;
            cur->next = cur->next->next;
            cur->next->next = tmp;
            tmp->next = tmp1;
            cur = cur->next->next;
        }
        return dummyHead->next;
    }
};

相关推荐

  1. leetcode24. 交换节点

    2023-12-12 23:46:04       49 阅读
  2. LeetCode [24] 交换节点

    2023-12-12 23:46:04       44 阅读
  3. Leetcode24. 交换节点

    2023-12-12 23:46:04       44 阅读
  4. LeetCode24.交换节点

    2023-12-12 23:46:04       40 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-12 23:46:04       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-12 23:46:04       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-12 23:46:04       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-12 23:46:04       20 阅读

热门阅读

  1. 【python中类的介绍】

    2023-12-12 23:46:04       34 阅读
  2. harmonyOS开发技巧(二)——沉浸式以及状态栏高

    2023-12-12 23:46:04       28 阅读
  3. 记录 | ubuntu升级/降级/安装指定版本的vim

    2023-12-12 23:46:04       35 阅读
  4. Git全局设置命令---设置提交人邮箱

    2023-12-12 23:46:04       36 阅读
  5. Vue || Uniapp 模糊查询

    2023-12-12 23:46:04       32 阅读
  6. 如何在Git中忽略DS_Store文件

    2023-12-12 23:46:04       34 阅读
  7. 代码随想录 416. 分割等和子集

    2023-12-12 23:46:04       36 阅读
  8. typescript中常用object方法?

    2023-12-12 23:46:04       36 阅读