【每日刷题】Day23

news2024/12/24 2:38:10

【每日刷题】Day23

🥕个人主页:开敲🍉

🔥所属专栏:每日刷题🍍

🌼文章目录🌼

1. 138. 随机链表的复制 - 力扣(LeetCode)

2. 链表的回文结构_牛客题霸_牛客网 (nowcoder.com)

3. 237. 删除链表中的节点 - 力扣(LeetCode)

1. 138. 随机链表的复制 - 力扣(LeetCode)

//这题对深拷贝不了解的需要先去了解一下,不然很难写这道题。

//思路:首先创建一个标准新链表,先不管random指针,就将原链表的val存入新链表。然后使用一个数组存储原链表每个节点的地址

typedef struct Node SN;


 

struct Node* copyRandomList(struct Node* head)

{

    if(!head)

    {

        return NULL;

    }

    SN* pmove = head;

    SN* pmove1 = head;

    SN* pnewhead = (SN*)malloc(sizeof(SN));

    SN* newmove = pnewhead;

    while(pmove)

    {

        SN* newnode = (SN*)malloc(sizeof(SN));

        newnode->next = NULL;

        newnode->val = pmove->val;

        newmove->next = newnode;

        pmove = pmove->next;

        newmove = newmove->next;

    }

    SN* newmove1 = pnewhead->next;

    SN* arr[2000];

    int i = 0;

    while(head)

    {

        arr[i++] = head;

        head = head->next;

    }

    SN* phead = newmove1;

    while(pmove1)

    {

        SN* pmove2 = phead;

        int j = 0;

        while(pmove1->random!=arr[j]&&pmove2)

        {

            pmove2 = pmove2->next;

            j++;

        }

        newmove1->random = pmove2;

        pmove1 = pmove1->next;

        newmove1 = newmove1->next;

    }

    return pnewhead->next;

}

2. 链表的回文结构_牛客题霸_牛客网 (nowcoder.com)

//思路:得到链表的中间节点,将链表的后半段反转,再创建一个指向链表头节点的指针。指向链表中间节点的指针,两个指针同时走,比较val,val不相等直接返回false,都相等就返回true,只要有一个指针为NULL就停止循环。

class PalindromeList

{

public:

struct ListNode* FindMid(struct ListNode* A)//得到指向链表中间节点的指针

{

    struct ListNode* fast = A;

    struct ListNode* slow = A;

    while(fast&&fast->next)

    {

        fast = fast->next->next;

        slow = slow->next;

    }

    return slow;  

}

struct ListNode* reverseList(struct ListNode* head)//将链表后半段反转

{

    if(head==NULL||head->next==NULL)

    {

        return head;

    }

    struct ListNode* pf1 = NULL;

    struct ListNode* pf2 = head;

    struct ListNode* pf3 = pf2->next;

    while(pf2->next)

    {

        pf2->next = pf1;

        pf1 = pf2;

        pf2 = pf3;

        pf3 = pf3->next;

    }

    pf2->next = pf1;

    pf1 = pf2;

    return pf1;

}

    bool chkPalindrome(ListNode* A)

    {

        struct ListNode* mid = FindMid(A);//mid为指向链表中间节点的指针

        struct ListNode* cur = reverseList(mid);//传mid以反转后半段

        while(A&&cur)//循环逐个比较val

        {

            if(A->val!=cur->val)

            {

                return false;

            }

            A = A->next;

            cur = cur->next;

        }

        return true;

    }

};

3. 237. 删除链表中的节点 - 力扣(LeetCode)

//思路:创建新链表。这道题的难点在于无法使用头节点对链表进行访问,因此我们可以想到通过改变需要删除节点来达到删除的目的。这里我们创建一个新的链表,新的链表存储的是要删除节点后的数据,然后将要删除节点中的值改为新链表头节点的值,要删除节点的next指针的指向改为新链表的第二个节点。

typedef struct ListNode LN;

void deleteNode(struct ListNode* node)

{

    LN* pmove = node->next;//指向要删除节点的下一个节点

    LN* pnewhead = (LN*)malloc(sizeof(LN));//新链表的哨兵位

    LN* phead = pnewhead;

    while(pmove)//将要删除节点后面的节点中的值存入新链表

    {

        phead->next = pmove;

        pmove = pmove->next;

        phead = phead->next;

    }

    node->val = pnewhead->next->val;//将要删除节点的val改为新链表头节点的val

    node->next = pnewhead->next->next;next指针指向新链表的第二个节点

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1620064.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

邂逅JavaScript逆向爬虫-------基础篇之面向对象

目录 一、概念二、对象的创建和操作2.1 JavaScript创建对象的方式2.2 对象属性操作的控制2.3 理解JavaScript创建对象2.3.1 工厂模式2.3.2 构造函数2.3.3 原型构造函数 三、继承3.1 通过原型链实现继承3.2 借用构造函数实现继承3.3 寄生组合式继承3.3.1 对象的原型式继承3.3.2 …

zabbix6.4告警配置(短信告警和邮件告警),脚本触发

目录 一、前提二、告警配置1.邮件告警脚本配置2.短信告警脚本配置3.zabbix添加报警媒介4.zabbix创建动作4.给用户添加报警媒介 一、前提 已经搭建好zabbix-server 在需要监控的mysql服务器上安装zabbix-agent2 上述安装步骤参考我的上篇文章:通过docker容器安装za…

软考-系统集成项目管理中级--合同管理

本章历年考题分值统计(16年11月及以后按新教材考的) 本章重点常考知识点汇总清单(学握部分可直接理解记忆) 8、合同签订管理(掌握)10下53,14上53,15上53 考题 签订合同的前期调查,每一项合同在签订之前,应当做好以下几…

Python蜘蛛侠

目录 写在前面 蜘蛛侠 编写代码 代码分析 更多精彩 写在后面 写在前面 本期小编给大家推荐一个酷酷的Python蜘蛛侠,一起来看看叭~ 蜘蛛侠 蜘蛛侠(Spider-Man)是美国漫威漫画宇宙中的一位标志性人物,由传奇创作者斯坦李与艺…

MySQL主从结构搭建

说明:本文介绍如何搭建MySQL主从结构; 原理 主从复制原理如下: (1)master数据写入,更新binlog; (2)master创建一个dump线程向slave推送binlog; &#xff…

javaScript中的作用域和作用域链

作用域(Scope) 什么是作用域 作用域是在运行时代码中的某些特定部分中变量、对象和函数的可访问性。 换句话说,作用域决定了代码区块中变量和其他资源的可见性。 示例: function outFun2() {var inVariable "内层变量2…

通过本机端口映射VMware中虚拟机应用(例如同一局域网别人想远程连接你虚拟机中的数据库)

需要 虚拟机中安装一下达梦数据库,并且以后大家都连接你虚拟机中达梦数据库进行开发。。。。。。在不改动自己虚拟机配置,以及本地网卡任何配置的情况下如何解决?本虚拟机网络一直使用的NAT模式。 解决 找到NAT设置添加端口转发即可解决。…

springboot+springsecurity+vue前后端分离权限管理系统

有任何问题联系本人QQ: 1205326040 1.介绍 优秀的权限管理系统,核心功能已经实现,采用springbootvue前后端分离开发,springsecurity实现权限控制,实现按钮级的权限管理,非常适合作为基础框架进行项目开发。 2.效果图…

AI创作系统Pro版,付费及流量主小程序源码搭建,抖音小程序项目分享,ai系统搭建运营。

AI技术可以激发新的创新思维和方法,在许多领域都能发挥重要作用。今天我们来讲述以下这款ai工具的作用以及可以延伸出什么互联网项目。 一、AI创作系统Pro系统功能 这款系统有AI写真,绘画,动 漫,音 乐,换 脸&#xf…

DSP 应用领域及内部结构

随着 DSP 性能的改善和成本的降低,DSP 在通用数字信号算法处理的基础上,其应用几乎遍及电子学每个领域。 (1)通信:网络通信,高速调制解调器,编/解码器,自适应均衡器,移动…

MES(生产管理系统)开发岗人才定向培养来啦

定向就业培养,职等你来 《中国制造2025》,是我国实施制造强国战略第一个十年的行动纲领,按照“四个全面”战略布局要求,实施制造强国战略,加强 统筹规划和前瞻部署。围绕重点行业转型升级和新一代信息技术、智能制造、…

小程序APP屏幕悬浮按钮可拖动可展开

示例&#xff1a; 插件地址&#xff1a;suspensionButton 悬浮按钮 - DCloud 插件市场 使用方式&#xff1a; import pxSuspenButton from /components/px-suspen-button/index components: { pxSuspenButton }, <pxSuspenButton :centerIcon"centerIcon" :bgCo…

【VSCode调试技巧】Pytorch分布式训练调试

最近遇到个头疼的问题&#xff0c;对于单机多卡的训练脚本&#xff0c;不知道如何使用VSCode进行Debug。 解决方案&#xff1a; 1、找到控制分布式训练的启动脚本&#xff0c;在自己的虚拟环境的/lib/python3.9/site-packages/torch/distributed/launch.py中 2、配置launch.…

【GitHub】2FA认证(双重身份验证)

GitHub 2FA认证&#xff08;双重身份验证&#xff09; 写在最前面一、使用 TOTP 应用程序配置双2FA&#xff08;双因素身份验证&#xff09;1. 介绍2. github3. 认证 官网介绍小结 & 补充 &#xff1a;权限不足or验证码错误问题 &#x1f308;你好呀&#xff01;我是 是Yu欸…

【DVadmin教程】新增一个app并且创建一个curd模型

下载dvadmin 在gitee上搜索 django-vue-admin 别选错了&#xff0c;选择那个星最多的 gitee上会推荐移步 django-vue3-admin 别上当&#xff0c;用那个会踩坑&#xff0c;此教程就不适用了&#xff1b; 运行后端 后端 创建APP python manage.py startapp rules调整位置 为了…

【Linux】详解信号的分类如何自定义信号的作用

一、信号的定义 Linux系统提供的让用户(进程)给其他进程发送异步信息的一种方式。在操作系统中&#xff0c;信号是一种进程间通讯的有限制的方式&#xff0c;主要用于提醒进程某个事件已经发生。信号在Unix、类Unix以及其他POSIX兼容的操作系统中广泛应用。它作为一种异步的通知…

Ubuntu系统开机长

Ubuntu系统开机长 1. 检查开机自启动软件的所占时间2. 将耗时最高的禁止开机自启动 1. 检查开机自启动软件的所占时间 systemd-analyze blame2. 将耗时最高的禁止开机自启动 sudo systemctl disable networking.service这个耗时是有阈值的&#xff0c;一般大于15s的算&#x…

增加PyQt5界面的交通流量预测(模型为CNN_GRU,CNN_BiGRU_ATTENTION,LSTM,Python代码)

1.效果视频&#xff1a;增加PyQt5界面的交通流量预测&#xff08;模型为CNN_GRU&#xff0c;CNN_BiGRU_ATTENTION&#xff0c;LSTM&#xff09;_哔哩哔哩_bilibili&#xff09; 2.三个模型和数据集的介绍 交通流量预测(python代码&#xff0c;压缩包中带有数据&#xff0c;CN…

基于pytorch hook机制,生成一次前后向的timeline

基于pytorch hook机制,生成一次前后向的timeline 一.效果图二.代码三.运行以上代码,生成timeline.json,打开https://ui.perfetto.dev/,导入该文件,可看到以上效果 本文通过pytorch hook机制,拦截所有子module的forward和backward,统计执行时间及内存使用情况 一.效果图 二.代码…