【每日刷题】Day23

【每日刷题】Day23

🥕个人主页:开敲🍉

🔥所属专栏:每日刷题🍍

🌼文章目录🌼

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

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

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

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

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

//思路:首先创建一个标准新链表,先不管random指针,就将原链表的val存入新链表。然后使用一个数组存储原链表每个节点的地址。随后处理random,遍历原链表的random,去数组中寻找,没找到就让新链表向后遍历一位,当找到时,新链表的指针也指向了random指向的地址。

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.mfbz.cn/a/578964.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C++11新特性:lambda表达式

目录 1.lambda表达式 1.1 C98中的一个例子 1.2 lambda表达式 1.3 lamzbda表达式语法 1. lambda表达式各部分说明 2. 捕获列表说明 1.4 函数对象与lambda表达式 1.lambda表达式 1.1 C98中的一个例子 在C98中,如果想要对一个数据集合中的元素进行排序&#xff0…

spring的常用注解

目录 1.前言 2.web url映射 2.1RequestMapping 2.2PostMapping 2.3GetMapping 3.参数接受和接口响应 3.1RequestParam 3.2RequstBoby 3.3ResponseBoby 3.4RestController 4.bean的存储 4.1Controller 4.2Service 4.3Repository 4.4Compontent 4.5Configuration …

判断n以内的素数个数的五种方法+时间对比

目录 方法一:暴力法 复杂度 方法二:跨度为6的倍数的优化 复杂度 方法三:埃氏筛法 复杂度 方法四:埃氏筛法的改良 复杂度 方法五:线性筛 复杂度 性能对比测试 练习 方法一:暴力法 就是写一个函…

Nacos 集群 On K8s 实践服务注册发现、服务动态配置

一、K8s 部署 Nacos 集群 安装规划 组件replicas类型mysql1StatefulSetnacos3StatefulSet 使用 k8s 版本为:v1.18.0 。 本次使用 OpenEBS 来作为存储引擎,OpenEBS 是一个开源的、可扩展的存储平台,它提供了一种简单的方式来创建和管理持久…

JavaEE——Spring Boot入门

目录 📚 JavaEE——Spring Boot入门 🔧 1. 新建Spring Boot项目 🛠 2. 添加pom依赖 📝 3. 添加application.yml文件 📂 4. 创建Dao层 🔧 5. 创建Service层 🖥️ 6. 创建Controller层及HT…

easyExcel快速入门

目录 🧂1.简单介绍 🌭2.快速入门 🥓1.导入依赖 🍿2.导出到excel 🎏3.读入数据 🎉4.下载 1.简单介绍 传统操作Excel大多都是利用Apach POl进行操作的,但是POI框架并不完善,使用过程非常繁琐且有较多…

redisson分布式锁的单机版应用

package com.redis;/*** author linn* date 2024年04月23日 15:31*/ import org.redisson.Redisson; import org.redisson.api.RedissonClient; import org.redisson.config.Config; import org.springframework.context.annotation.Bean; import org.springframework.context.…

多端文件互传软件-LocalSend

一、前言 日常学习或者是工作需求,需要手机和电脑互传文件。用到频率低的话,使用即时通讯软件也就够了。 像我日常使用的多端互传文件软件是LocalSend。 二、 LocalSend LocalSend是一款基于局域网的文件传输工具。 LocalSend是一种用于在本地网络中…

super与this

目录 原型链与继承继承中的原型链 classsuper与this 我们可能会对一个问题感到好奇:为什么在派生类中,我们需要在调用this之前调用super。我们通常将其视为一种规范,却很少深入探究这个规范的真正意义。许多人认为super不过是ES6之前继承方式…

SpringBoot 3.2.5 引入Swagger(OpenApi)

SpringBoot 3.2.5 引入Swagger(OpenApi) pom文件配置文件启动类Controller 层ApiFox题外话 springdoc-openapi 和 swagger 都可以用,用其中一个就行,不用两个都引入。 这里简单记录以下springdoc-openapi。 springdoc-openapi(J…

每日算法之两两交换链表中的节点

题目描述 给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。 示例 1: 输入:head [1,2,3,4] 输出&…

sheng的学习笔记-AI-支持向量机(SVM)

目录:sheng的学习笔记-AI目录-CSDN博客 目录 什么是向量机 SVM算法原理 SVM基本模型 SVM对偶问题 什么是对偶问题: 为什么使用对偶问题 拉格朗日定理 拉格朗日乘子法 对偶问题算法 非线性SVM算法原理 核函数 常用核函数 软间隔与正则化 软…

RabbitMQ-死信队列

面试题:你们是如何保证消息不丢失的? 1、什么是死信 在 RabbitMQ 中充当主角的就是消息,在不同场景下,消息会有不同地表现。 死信就是消息在特定场景下的一种表现形式,这些场景包括: 1. 消息被拒绝访问&…

教你一分钟快速部署 Llama3 中文大模型

之前百度创始人李彦宏先生曾经说过“开源大模型会越来越落后,闭源模型会持续领先”,但国货表示真的不服,紧接着被扎克伯格同学就给了当头一棒,向他展示了什么叫做顶级开源大模型。那变听我娓娓道来。 美国当地时间4月18日&#x…

使用NGINX做局域网内 浏览器直接访问链接 拓展外网链接访问本地

达成目的功能: 在本地服务的一个文件路径下,局域网内用ip和路径名访问到对应的地址;如 10.5.9.0/v1 即可访问到 某个固定本地地址目录 V1下,名为index.html的文件。前言 NGINX 是一个非常流行的开源 Web 服务器和反向代理服务器…

5分钟梳理银行测试,文末附带实战项目,0经验入行so easy

很多银行招聘都要求有相关从业经验,这对于想跨入这个岗位的0经验从业同学可真犯了难 “你都不让我上岗,我哪来的工作经验呢?” 为了解决这个问题,小编整理了本篇文章,从3个方面介绍银行项目是如何进行测试的 银行的…

思维+线性dp,CF573 B. Bear and Blocks

目录 一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 二、解题报告 1、思路分析 2、复杂度 3、代码详解 一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 Problem - 573B - Codeforces 二、解题报告 1、思路分析 本题给的图还是很直…

制糖工业智能工厂数字孪生可视化平台,推进制糖产业数字化转型

制糖工业智能工厂数字孪生可视化平台,推进制糖产业数字化转型。随着信息技术的快速发展,数字化转型已成为各行各业的重要趋势。在糖果加工制造领域,智能工厂数字孪生可视化平台的出现,为行业数字化转型注入了新的活力。 糖果加工制…

应用于智能装备制造,钡铼IOy系列模块展现其强大的灵活性和实用性

随着科技的飞速发展,智能制造已经成为工业4.0时代的核心驱动力。在此背景下,钡铼技术推出的IOy系列模块以其独特的设计、卓越的性能以及无可比拟的灵活性与实用性,在智能装备制造领域展现出了强大的技术优势和应用价值。 首先,钡…

Redis面试题二(数据存储)

目录 1.redis 的数据过期策略 1. 惰性删除(Lazy Expiration) 2. 定期删除(Periodic Expiration) 3. 定时删除(Timing-Based Expiration) 实际应用中的组合策略 2.redis 有哪些内存淘汰机制 volatile&…
最新文章