首页 > 其他分享 >力扣24 两两交换链表中的节点

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

时间:2023-03-17 15:33:47浏览次数:32  
标签:24 力扣 head ListNode next 链表 new2 NULL

两两交换链表中的节点:

先把一个链表分为两个链表,再把两个链表组成一个链表。

注意最后可能有一个链表有剩余,但此时另一个链表的指针已经到了NULL,要再遍历一遍/提前记录(感觉有点麻烦)。

class Solution {
public:
    ListNode* swapPairs(ListNode* head) {
        if(head==NULL||head->next==NULL)
        return head;
        ListNode* new1=new ListNode(),*e1=new1;
        ListNode* new2=new ListNode(),*e2=new2;
        int n=0;
        ListNode* p=head;
        while(p){
            if(n%2==0){
                e1->next=p;
                e1=p;
                p=p->next;
            }
            else{
                e2->next=p;
                e2=p;
                p=p->next;
            }
            n++;
        }
        e1->next=NULL;
        e2->next=NULL;
        p=new2->next;              //2的遍历指针
        ListNode* q=new1->next;    //1的遍历指针
        while(1){
            if(p==NULL||q==NULL)
            break;
            ListNode* next2=p->next;  //2的后节点
            ListNode* next1=q->next;  //1的后节点
            p->next=q;
            q->next=next2;
            q=next1;
            p=next2;
        }
        p=new1;
        if(q!=NULL)
        {
           while(p->next)
           p=p->next;
           p->next=q;
           q->next=NULL;
        }
        return new2->next;
    }
};

 

标签:24,力扣,head,ListNode,next,链表,new2,NULL
From: https://www.cnblogs.com/bhd123/p/17226982.html

相关文章

  • 2203031124-罗浩
    项目内容课程班级名称链接填写课程班级博客链接作业链接填写作业要求链接博客名称2203031124-罗浩-第一次c语言作业-作业1要求每道题要求有题目,代码(使......
  • 力扣197(MySQL)-上升的温度(简单)
    题目:表: Weather编写一个SQL查询,来查找与之前(昨天的)日期相比温度更高的所有日期的 id 。返回结果 不要求顺序 。查询结果格式如下例。 解题思路:方法一:使用......
  • 力扣196(MySQL)-删除重复的电子邮箱(简单)
    题目:表: Person编写一个SQL删除语句来删除所有重复的电子邮件,只保留一个id最小的唯一电子邮件。以任意顺序返回结果表。(注意:仅需要写删除语句,将自动对剩余结......
  • Resize Operation Completed For File# 201; FILE# Does Not Exist (Doc ID 2246369.1
    OracleDatabase-EnterpriseEdition-Version12.1.0.2to12.2.0.1[Release12.1to12.2]OracleDatabaseCloudSchemaService-VersionN/AandlaterOracleDa......
  • Qt音视频开发24-视频显示QOpenGLWidget方式(占用GPU)
    一、前言采用painter的方式绘制解码后的图片,方式简单易懂,巨大缺点就是占CPU,一个两个通道还好,基本上CPU很低,但是到了16个64个通道的时候,会发现CPU也是很吃紧(当然强劲的电脑......
  • LeetCode1024 -- 二分
    1.题目描述查找满足劳累天数严格大于不劳累天数的最大子区间2.思路对于区间问题,很容易先想到前缀和帮助我们优化。我们可以设,劳累=\(1\),不劳累=\(-1\),那么,就是求......
  • 【洛谷】P2480 [SDOI2010]古代猪文
    原题链接题意求:\[g^{\sum_{d|n}\binom{n}{d}}\mod999911659\]\(n,g\leq10^9\)。思路:因为\(999911659\)是质数,由欧拉定理的推论,可以得到:\[g^{\sum_{d|n}\bino......
  • 力扣---2488. 统计中位数为 K 的子数组
    给你一个长度为n的数组nums,该数组由从1到n的不同整数组成。另给你一个正整数k。统计并返回nums中的中位数等于k的非空子数组的数目。注意:   数组的......
  • 力扣203 删除链表元素
    两种做法:第一种是在原链表的基础上直接删除。此时需要先把链头节点特判一下。第二种是在原链表的表头再加一个节点,这样代码简单,并且原来的头节点就不需要特判了。注意:循......
  • 力扣中322 零钱兑换
       看了题解基本上能写个7788但是一些细节的处理还是bugpublicintcoinChange(int[]coins,intamount){intlen=coins.length;int[]dp=n......