当前位置: 首页 > news >正文

【每日刷题】Day16

【每日刷题】Day16

🥕个人主页:开敲🍉

🔥所属专栏:每日刷题🍍

🌼文章目录🌼

1. 24. 两两交换链表中的节点 - 力扣(LeetCode)

2. 160. 相交链表 - 力扣(LeetCode)

3. 136. 只出现一次的数字 - 力扣(LeetCode)

1. 24. 两两交换链表中的节点 - 力扣(LeetCode)

 //0ms  100%思路:创建新链表,malloc新节点按照题目所给顺序存储原链表节点,新链表逐个连接新节点

typedef struct ListNode LN;


 

 int ListNodeQua(LN* phead)//计算原链表节点数

 {

    LN* pmove = phead;

    int count = 0;

    while(pmove)

    {

        count++;

        pmove = pmove->next;

    }

    return count;

 }

struct ListNode* swapPairs(struct ListNode* head)

{

    if(head==NULL)

    {

        return NULL;

    }

    if(head->next==NULL)

    {

        return head;

    }


 

    int n = ListNodeQua(head);

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

    LN* pmove = head;//原链表奇数位节点

    LN* pmove1 = sentry;//用于遍历新链表连接新节点

    int i = 0;

    while(i<n/2)//交换次数即为循环次数

    {

        LN* pmove2 = pmove->next;//原链表偶数位节点

        LN* pget1 = (LN*)malloc(sizeof(LN));//新节点1

        pget1 = pmove2;//存储原链表偶数位节点

        pmove1->next = pget1;//连接新节点

        pmove1 = pmove1->next;//往后遍历以连接下一个节点

        LN* pget2 = (LN*)malloc(sizeof(LN));//新节点2

        pget2 = pmove;//存储原链表奇数位节点

        pmove->next = pmove2->next;//这里需要注意,由于原链表奇数位节点的next指向后一个偶数位节点,而下面我们在让新链表连接新节点时,会导致相邻两个节点成环,因此这里需要在新链表连接新节点前让奇数位节点的next指向下一个奇数位节点

        pmove1->next = pget2;//连接新节点

        pmove1 = pmove1->next;//往后遍历以连接下一个节点

        pmove = pmove->next;//由于上面我们奇数位节点next指向了下一个奇数位节点,因此这里直接走向next即可进行下一个交换

        i++;

    }

    LN* phead = head;

    if(n%2==1)//如果链表个数为奇数个,则在最后一次交换后会遗漏下最后一个节点,这里只需要直接将最后一个节点连接上即可

    {

        while(phead->next)

        {

            phead = phead->next;

        }

        pmove1->next = phead;

    }

    return sentry->next;

}

2. 160. 相交链表 - 力扣(LeetCode)

//思路:根据题目要求我们容易想到用两个指针遍历两个链表,当指针相等时就是相交的起始节点,直接返回。但是也容易发现一个问题,链表的长度不是严格相等的,因此,若是两个指针都在第一个节点同时遍历则可能会错过。那么我们这里的思路就是如何让两个指针刚好相遇——让较长的链表的指针先走过两链表长度差值的节点数。

typedef struct ListNode LN;

int ListNodeQua(LN* phead)//计算链表节点数

{

    LN* pmove = phead;

    int count = 0;

    while(pmove)

    {

        count++;

        pmove = pmove->next;

    }

    return count;

}


 

int my_abs(int x,int y)//返回两链表节点数差值(正数)

{

    return x>y?x-y:y-x;

}


 

struct ListNode *getIntersectionNode(struct ListNode *headA, struct ListNode *headB)

{

    if(headA==NULL||headB==NULL)

    {

        return NULL;

    }

    LN* pf1 = headA;

    LN* pf2 = headB;

    int a = ListNodeQua(headA);//链表A的节点数

    int b = ListNodeQua(headB);//链表B的节点数

    int x = my_abs(a,b);//两链表节点数差值的绝对值

    int flag = a>b?1:0;//用于判断需要哪个链表的指针走

    while(x)

    {

        if(flag)//如果flag为1,则说明链表A较长,则让pf1的指针走过x个节点

        {

            pf1 = pf1->next;

        }

        else//否则则是链表B较长,让pf2走过x个节点

        {

            pf2 = pf2->next;

        }

        x--;

    }

    while(pf1&&pf2)//这时再让pf1、pf2同时走,相遇时直接返回

    {

        if(pf1==pf2)

        {

            return pf1;

        }

        pf1 = pf1->next;

        pf2 = pf2->next;

    }

    return NULL;

}

3. 136. 只出现一次的数字 - 力扣(LeetCode)

//思路:这里需要知道的知识——

1、0^上任何数都等于任何数本身

2、两个相同的数^起来等于0

知道了这两个知识后,这道题就变得非常简单,因为数组中只有一个数字出现一次,其余的数字均出现了两次,那么我们用一个数(初始为0)^上这个数组中的每一个数,相同的数^在一起变为0,则^到最后就会变成0^上那个只出现了一次的数,而0^上任何数等于任何数,则直接返回最终^的结果即可

int singleNumber(int* nums, int numsSize)

{

    int num = 0;

    for(int i = 0;i<numsSize;i++)

    {

        num^=nums[i];

    }

    return num;

}

相关文章:

【每日刷题】Day16

【每日刷题】Day16 &#x1f955;个人主页&#xff1a;开敲&#x1f349; &#x1f525;所属专栏&#xff1a;每日刷题&#x1f34d; &#x1f33c;文章目录&#x1f33c; 1. 24. 两两交换链表中的节点 - 力扣&#xff08;LeetCode&#xff09; 2. 160. 相交链表 - 力扣&…...

【K8s】:在 Kubernetes 集群中部署 MySQL8.0 高可用集群(1主2从)

【K8s】&#xff1a;在 Kubernetes 集群中部署 MySQL8.0 高可用集群&#xff08;1主2从&#xff09; 一、准备工作二、搭建nfs服务器2.1 安装 NFS 服务器软件包&#xff08;所有节点执行&#xff09;2.2 设置共享目录2.3 启动 NFS 服务器2.4 设置防火墙规则&#xff08;可选&am…...

Vue内置组件TransitionGroup详细介绍

<TransitionGroup> 是一个内置组件&#xff0c;用于对 v-for 列表中的元素或组件的插入、移除和顺序改变添加动画效果。 和 <Transition> 的区别​ <TransitionGroup> 支持和 <Transition> 基本相同的 props、CSS 过渡 class 和 JavaScript 钩子监听器…...

【机器学习300问】71、神经网络中前向传播和反向传播是什么?

我之前写了一篇有关计算图如何帮助人们理解反向传播的文章&#xff0c;那为什么我还要写这篇文章呢&#xff1f;是因为我又学习了一个新的方法来可视化前向传播和反向传播&#xff0c;我想把两种方法总结在一起&#xff0c;方便我自己后续的复习。对了顺便附上往期文章的链接方…...

【ZZULIOJ】1067: 有问题的里程表(Java)

目录 题目描述 输入 输出 样例输入 Copy 样例输出 Copy 提示 code 题目描述 某辆汽车有一个里程表&#xff0c;该里程表可以显示一个整数&#xff0c;为该车走过的公里数。然而这个里程表有个毛病&#xff1a;它总是从3变到5&#xff0c;而跳过数字4&#xff0c;里程表…...

A21 STM32_HAL库函数 之 I2c通用驱动程序 -- B -- 所有函数的介绍及使用

A21 STM32_HAL库函数 之 I2c通用驱动程序 -- B -- 所有函数的介绍及使用 1 该驱动函数预览1.12 HAL_I2C_Master_Sequential_Receive_IT1.13 HAL_I2C_Slave_Transmit_IT1.14 HAL_I2C_Slave_Receive_IT1.15 HAL_I2C_Slave_Sequential_Transmit_IT1.16 HAL_I2C_Slave_Sequential_R…...

简介:Asp.Net Core进阶高级编程教程

课程简介目录 &#x1f680;前言一、课程背景二、课程目的三、课程特点四、课程适合人员六、最后 &#x1f680;前言 本文是《.Net Core进阶编程课程》教程专栏的导航站&#xff08;点击链接&#xff0c;跳转到专栏主页&#xff0c;欢迎订阅&#xff0c;持续更新…&#xff09…...

Linux系统中LVM与磁盘配额

目录 一、LVM逻辑卷管理 二、LVM的管理命令 物理卷管理 卷组管理 逻辑卷管理 *创建并使用LVM步骤 三、磁盘配额概述 实现磁盘限额的条件 Linux 磁盘限额的特点 四、磁盘配额管理 磁盘限额 一、LVM逻辑卷管理 能够在保持现有数据不变的情况下动态调整磁盘容量&#…...

手机重启手app没了

发现公司有些Android球机设备&#xff0c;安装了一些app&#xff0c;重启后app没了&#xff0c;还有公司的一些Android手机&#xff0c;原来是没问题的&#xff0c;不知道哪天起&#xff0c;只要重启&#xff0c;新安装的软件就会没了&#xff0c;很神奇。后来发现&#xff0c;…...

github上传代码

偷一下懒&#xff0c;把链接贴一下&#xff0c;后续再补充。 1.下载Git 【学习笔记】上传代码到GitHub&#xff08;保姆级教程&#xff09; 2.如何创建GitHub仓库 手把手教你在github上传文件 3.如何删掉GitHub仓库 github如何删除仓库或项目&#xff1f; 4.遇到的错误 …...

Qt+vstudio2022的报错信息积累

从今天开始记录一下平常开发工作中的报错记录&#xff0c;后续有错误动态补充&#xff01; 报错信息&#xff1a;【MSB8041】此项目需要 MFC 库。从 Visual Studio 安装程序(单个组件选项卡)为正在使用的任何工具集和体系结构安装它们。 解决&#xff1a; 背景&#xff1a;换…...

力扣练习题(2024/4/16)

1买卖股票的最佳时机 给定一个数组 prices &#xff0c;它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票&#xff0c;并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。 返回你可以从这笔…...

c++中一些常用库函数

1.最大公约数 需要包括头文件#include<algorithm>,直接写__gcd(a,b),就是求a与b的最大公约数。 #include<iostream> #include<algorithm> #include<cstring> #include<cmath> #include<queue> #include<stack> #include<map>…...

竞赛 基于GRU的 电影评论情感分析 - python 深度学习 情感分类

文章目录 1 前言1.1 项目介绍 2 情感分类介绍3 数据集4 实现4.1 数据预处理4.2 构建网络4.3 训练模型4.4 模型评估4.5 模型预测 5 最后 1 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 基于GRU的 电影评论情感分析 该项目较为新颖&#xff0c;适合作为竞…...

软件杯 深度学习图像修复算法 - opencv python 机器视觉

文章目录 0 前言2 什么是图像内容填充修复3 原理分析3.1 第一步&#xff1a;将图像理解为一个概率分布的样本3.2 补全图像 3.3 快速生成假图像3.4 生成对抗网络(Generative Adversarial Net, GAN) 的架构3.5 使用G(z)生成伪图像 4 在Tensorflow上构建DCGANs最后 0 前言 &#…...

java日志log4j使用

1、导入jar包 log4j-1.2.17.jar log4j-api-2.0-rc1.jar log4j-core-2.0-rc1.jar https://download.csdn.net/download/weixin_44201223/89148839 所需jar包下载地址 2、创建 log4j.properties src 下创建 log4j.properties (路径和名称都不允许改变)&#xff0c;放置 src 下…...

探索Python爬虫利器:Scrapy框架解析与实战

探索Python爬虫利器&#xff1a;Scrapy框架解析与实战 在当今信息时代&#xff0c;数据的价值不言而喻。而Python爬虫技术&#xff0c;作为获取网络数据的重要手段&#xff0c;已经成为了许多数据分析师、开发者和研究者必备的技能。本文将为您详细介绍Python爬虫技术中的利器—…...

Rust腐蚀服务器修改背景和logo图片操作方法

Rust腐蚀服务器修改背景和logo图片操作方法 大家好我是艾西一个做服务器租用的网络架构师。在我们自己搭建的rust服务器游戏设定以及玩法都是完全按照自己的想法设定的&#xff0c;如果你是一个社区服那么对于进游戏的主页以及Logo肯定会有自己的想法。这个东西可以理解为做一…...

【架构-15】NoSQL数据库

NoSQL&#xff08;Not Only SQL&#xff09;数据库是一类非关系型数据库&#xff0c;与传统的关系型数据库&#xff08;如MySQL、Oracle&#xff09;相对而言。NoSQL数据库的设计目标是针对大规模数据和高并发访问的需求&#xff0c;具有高可扩展性、高性能和灵活的数据模型。 …...

中国人工智能产业年会智能交通与自动驾驶专题全景扫描

中国人工智能产业年会&#xff08;CAIIAC&#xff09;是中国人工智能技术发展和应用的重要展示平台&#xff0c;不仅关注创新&#xff0c;还涵盖了市场和监管方面的内容&#xff0c;对于促进人工智能领域的发展起到了重要作用。年会汇集了来自学术界、工业界和政府的专家&#…...

Linux 文件类型,目录与路径,文件与目录管理

文件类型 后面的字符表示文件类型标志 普通文件&#xff1a;-&#xff08;纯文本文件&#xff0c;二进制文件&#xff0c;数据格式文件&#xff09; 如文本文件、图片、程序文件等。 目录文件&#xff1a;d&#xff08;directory&#xff09; 用来存放其他文件或子目录。 设备…...

深入理解JavaScript设计模式之单例模式

目录 什么是单例模式为什么需要单例模式常见应用场景包括 单例模式实现透明单例模式实现不透明单例模式用代理实现单例模式javaScript中的单例模式使用命名空间使用闭包封装私有变量 惰性单例通用的惰性单例 结语 什么是单例模式 单例模式&#xff08;Singleton Pattern&#…...

涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战

“&#x1f916;手搓TuyaAI语音指令 &#x1f60d;秒变表情包大师&#xff0c;让萌系Otto机器人&#x1f525;玩出智能新花样&#xff01;开整&#xff01;” &#x1f916; Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制&#xff08;TuyaAI…...

中医有效性探讨

文章目录 西医是如何发展到以生物化学为药理基础的现代医学&#xff1f;传统医学奠基期&#xff08;远古 - 17 世纪&#xff09;近代医学转型期&#xff08;17 世纪 - 19 世纪末&#xff09;​现代医学成熟期&#xff08;20世纪至今&#xff09; 中医的源远流长和一脉相承远古至…...

Java编程之桥接模式

定义 桥接模式&#xff08;Bridge Pattern&#xff09;属于结构型设计模式&#xff0c;它的核心意图是将抽象部分与实现部分分离&#xff0c;使它们可以独立地变化。这种模式通过组合关系来替代继承关系&#xff0c;从而降低了抽象和实现这两个可变维度之间的耦合度。 用例子…...

Golang——7、包与接口详解

包与接口详解 1、Golang包详解1.1、Golang中包的定义和介绍1.2、Golang包管理工具go mod1.3、Golang中自定义包1.4、Golang中使用第三包1.5、init函数 2、接口详解2.1、接口的定义2.2、空接口2.3、类型断言2.4、结构体值接收者和指针接收者实现接口的区别2.5、一个结构体实现多…...

关于easyexcel动态下拉选问题处理

前些日子突然碰到一个问题&#xff0c;说是客户的导入文件模版想支持部分导入内容的下拉选&#xff0c;于是我就找了easyexcel官网寻找解决方案&#xff0c;并没有找到合适的方案&#xff0c;没办法只能自己动手并分享出来&#xff0c;针对Java生成Excel下拉菜单时因选项过多导…...

FFmpeg avformat_open_input函数分析

函数内部的总体流程如下&#xff1a; avformat_open_input 精简后的代码如下&#xff1a; int avformat_open_input(AVFormatContext **ps, const char *filename,ff_const59 AVInputFormat *fmt, AVDictionary **options) {AVFormatContext *s *ps;int i, ret 0;AVDictio…...

Qt的学习(一)

1.什么是Qt Qt特指用来进行桌面应用开发&#xff08;电脑上写的程序&#xff09;涉及到的一套技术Qt无法开发网页前端&#xff0c;也不能开发移动应用。 客户端开发的重要任务&#xff1a;编写和用户交互的界面。一般来说和用户交互的界面&#xff0c;有两种典型风格&…...

机器学习的数学基础:线性模型

线性模型 线性模型的基本形式为&#xff1a; f ( x ) ω T x b f\left(\boldsymbol{x}\right)\boldsymbol{\omega}^\text{T}\boldsymbol{x}b f(x)ωTxb 回归问题 利用最小二乘法&#xff0c;得到 ω \boldsymbol{\omega} ω和 b b b的参数估计$ \boldsymbol{\hat{\omega}}…...