【每日刷题】Day10

【每日刷题】Day10

🥕个人主页:开敲🍉

🔥所属专栏:每日刷题🍅

目录

1. 环形链表的约瑟夫问题_牛客题霸_牛客网 (nowcoder.com)

2. 21. 合并两个有序链表 - 力扣(LeetCode)

3. 1523. 在区间范围内统计奇数数目 - 力扣(LeetCode)

1. 环形链表的约瑟夫问题_牛客题霸_牛客网 (nowcoder.com)

//思路:根据题目所给n的大小动态开辟节点,将每个节点头尾相连,形成一个闭环(环形链表),然后返回这个环形链表最后一个开辟的节点的地址,使用两个指针——prev和pcur,pcur指针用于定位需要删除的元素,prev用于帮助pcur定位

typedef struct ListNode ListNode;

ListNode* BuyNode(int n)

{

    ListNode* pf = (ListNode*)malloc(sizeof(ListNode));//开辟节点,并设置节点内容

    if(pf==NULL)

    {

        exit(-1);

    }

    pf->val = n;

    pf->next = NULL;

    return pf;

}

ListNode* LinkList(int n)//创建循环链表

{

    ListNode* phead = BuyNode(1);

    ListNode* ptail = phead;

    for(int i = 2;i<=n;i++)

    {

        ptail->next = BuyNode(i);

        ptail = ptail->next;

    }

    ptail->next = phead;//最后不要忘记将最后一个节点和第一个节点头尾相连

    return ptail;//返回最后一个节点

}


 

int ysf(int n, int m )

{

    ListNode* prev = LinkList(n);//接收最后一个节点

    ListNode* pcur = prev->next;//定位第一个节点

    int count = 1;//初始pcur指向第一个节点,第一个人报数1,因此count初始为1

    while(pcur->next!=pcur)//循环条件,因为最后只会剩下一个人,因此,pcur->next会指向pcur本身

    {

        if(count==m)//如果count==m,则找到了要删除的元素

        {

            prev->next = pcur->next;//先让prev->next指向需要删除元素的下一个元素

            free(pcur);//直接删除pcur指向的元素

            pcur = prev->next;//再将pcur指向prev->next(也就是需要删除元素的下一个元素)

            count = 1;//再将count置为1

        }

        else

        {

            prev = pcur;//将pcur定位到prev的位置

            pcur = pcur->next;//然后pcur从prev的位置继续往后走

            count++;

        }

    }

    return pcur->val;

}

2. 21. 合并两个有序链表 - 力扣(LeetCode)

//思路:创建一个虚拟的新链表(不用开辟新的空间),再创建四个指针,分别是:Sentry(用于指向新链表的开头)、ptail(用于遍历新链表)、pf1(用于指向第一个链表的第一个节点)、pf2(用于指向第二个链表的第一个节点)。然后让pf1和pf2分别遍历list1和list2,比较每个节点中val值的大小,小的尾插进新链表中。

 

typedef struct ListNode ListNode;


 

struct ListNode* mergeTwoLists(struct ListNode* list1, struct ListNode* list2)

{

    if(list1==NULL&&list2==NULL)//两个链表都为空则直接返回NULL

    {

        return NULL;

    }

    ListNode* Sentry = (ListNode*)malloc(sizeof(ListNode));//哨兵位,用于指向新链表第一个节点

    ListNode* ptail = Sentry;//用于遍历新链表

    ListNode* pf1 = list1;//指向第一个链表第一个节点

    ListNode* pf2 = list2;//指向第二个链表第一个节点

    while(pf1&&pf2)//只要有一个链表遍历完则直接退出循环

    {

        if(pf1->val<pf2->val)//小的尾插进新链表

        {

            ptail->next = pf1;

            ptail = ptail->next;

            pf1 = pf1->next;

        }

        else

        {

            ptail->next = pf2;

            ptail = ptail->next;

            pf2 = pf2->next;

        }

    }

//跳出上面循环可能是list1遍历完了,也可能是list2遍历完了,这里需要将没有遍历完的链表中的节点尾插进新链表

    while(pf1)

    {

        ptail->next = pf1;

        ptail = ptail->next;

        pf1 = pf1->next;

    }

    while(pf2)

    {

        ptail->next = pf2;

        ptail = ptail->next;

        pf2 = pf2->next;

    }

    return Sentry->next;//返回新链表的第一个节点

}

3. 1523. 在区间范围内统计奇数数目 - 力扣(LeetCode)

//最快解法,考虑到每种边界情况,计算奇数个数

int countOdds(int low, int high)

{

    int x = low%2;

    int y = high%2;

    int count = 0;

    if(x&&y)

    {

        count = (high-low)/2+1;//边界都为奇数的情况

    }

    if((x==0&&y)||(y==0&&x))

    {

        count = (high-low+1)/2;//边界一奇一偶情况

    }

    if(x==0&&y==0)

    {

        count = (high-low)/2;//边界都是偶数情况

    }

    return count;

}

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

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

相关文章

【Linux】 探索Linux中的cat指令:常用用法一览

你没想象中那么恋旧 回忆换不回你的温柔 最后也不是故作冷漠 转过头我怎么有一滴泪落 我没想象中那么脆弱 分开后心容眼眉消瘦 一起踏过了几座春秋 领悟了爱不是追逐占有 &#x1f3b5; 许嵩《想象之中》 在Linux和Unix系统中&#xff0c;cat&#xff08;…

灌醉阿里P8大佬!获取内部二进制网络安全学习路线(建议收藏

0x01 二进制学习路线 1.踏实的基础。 基础是很重要的&#xff0c;可以通过计算机体系结构来学习&#xff0c;当然肯定不只是计算机体系结构&#xff0c;还有很多的知识。计算机科学系统基础知识的积累和沉淀&#xff0c;提升自己的计算机科学素养&#xff0c;理解计算机的工作…

windows中anaconda下创建新的新的jupyter环境

https://blog.csdn.net/weixin_43491496/article/details/130325001?spm1001.2014.3001.5502 这里写目录标题 1.1界面化创建虚拟环境1.2命令行创建虚拟环境2.查看是否创建成功3.激活虚拟环境pylessonppt4.更改工作目录5.删除6.查看是否删除成功 1.1界面化创建虚拟环境 1.2命令…

润乾报表平台 InputServlet 任意文件上传漏洞复现

0x01 产品简介 润乾报表是一个纯JAVA的企业级报表工具,支持对J2EE系统的嵌入式部署,无缝集成。服务器端支持各种常见的操作系统,支持各种常见的关系数据库和各类J2 EE的应用服务器,客户端采用标准纯html方式展现,支持ie和netscape, 润乾报表是领先的企业级报表分析软件。…

CPI高于预期!比特币与美股“脱钩”,下挫后急拉盘!减半“护航”下,加密市场四月剧本如何走?

美国劳工部于昨&#xff08;10&#xff09;晚公布了最新的CPI&#xff08;消费者物价指数&#xff09;数据&#xff0c;显示美国3月CPI年增幅达3.5%&#xff0c;不只高于前月的年增3.2%&#xff0c;也高于市场预估的3.4%&#xff0c;表明通货膨胀依然顽固。 高于预期的CPI数据释…

c++和python基本数据类型比较

以下是 C 和 Python 中一些基本数据类型的比较&#xff1a; 1. 整数类型&#xff1a; C&#xff1a; C 中的整数类型包括 int, short, long, long long 等&#xff0c;它们的大小和范围取决于编译器和操作系统。 Python&#xff1a; Python 中只有一个整数类型 int&#xff0…

【STL】string

头文件&#xff1a; #include<string>string的基本概念概念&#xff1a; 概念&#xff1a;string是c中的字符串类型&#xff0c;相当于C语言中的char *&#xff0c;其本质是一个封装好的类 string和char*的区别&#xff1a; char* 是一个指针string是一个内部封装了c…

uniapp小程序给指定的页面新增下拉刷新功能

需求:有些页面需要实时更新数据,但是又不能做实时刷新,所以给用户一个手动下拉刷新指定接口的功能 第一步:在pages.json给页面加"enablePullDownRefresh": true配置 第二步:在指定页面写onPullDownRefresh方法,和methods同级 onPullDownRefresh() {//加个定时器1秒…

辉芒微FMD之FT61EC2x

辉芒微的官网&#xff1a;辉芒微电子 FMD | 官方网站 (fremontmicro.com) 1、安装开发环境 一共有如下三款APP&#xff0c; 第一个是 FMDIDE&#xff1b; FMDIDE软件是支持全系列8位MCU的集成开发环境&#xff0c;集代码编辑、分析、编译、调试等功能于一身。 编译器支持C89…

融中财经专访 | 欧科云链:从跟随行业到引领行业

导读 THECAPITAL 新行业中的经验“老兵”。 本文4089字&#xff0c;约5.8分钟 作者 | 吕敬之 编辑 | 吾人 来源 | 融中财经 &#xff08;ID&#xff1a;thecapital&#xff09; 一个新兴行业从发展到成熟需要几个必要的推手&#xff1a;人才、产品、制度。 Web3.0&…

Github第一Star数的国产免费开源防火墙--雷池社区版初步体验

前言 近期准备搭建一个博客网站&#xff0c;用来存储工作室同学们的学习笔记。服务器准备直接放在公网上&#xff0c;方便大家随时随地的上传和浏览&#xff0c;为了防止网站被人日穿成为肉鸡&#xff0c;一些防御措施还是要部署的。 首先明确自己的需求&#xff1a; 零成本…

头歌-机器学习 第10次实验 逻辑回归

第1关&#xff1a;逻辑回归核心思想 任务描述 本关任务&#xff1a;根据本节课所学知识完成本关所设置的编程题。 相关知识 为了完成本关任务&#xff0c;你需要掌握&#xff1a; 什么是逻辑回归&#xff1b; sigmoid函数。 什么是逻辑回归 当一看到“回归”这两个字&a…

企业出海--跨境时延测试(拉美篇)

随着全球化不断发展&#xff0c;中国企业也不断向海外拓展业务&#xff0c;开拓市场&#xff0c;增加收入来源&#xff0c;扩大自身品牌影响力。然而出海企业面临不同以往的困难和挑战&#xff0c;在其中不可避免面临的跨境网络时延问题&#xff0c;如何选择区域进行部署企业业…

QT5.14.2解锁Qt自定义标题栏的无限可能,一键拥有与众不同的个性窗口!

在现代化的软件设计中&#xff0c;个性化和美观是应用程序界面不可或缺的元素。而传统的Qt窗口往往风格单一&#xff0c;标题栏固定死板&#xff0c;这严重限制了界面的灵活性和视觉体验。有没有一种方法&#xff0c;可以摆脱这些束缚&#xff0c;为我们的Qt应用注入无限活力?…

Open CASCADE学习|迭代NCollection_Sequence<gp_Pnt>

目录 1、NCollection_Sequence 2、NCollection_Sequence 3、迭代NCollection_Sequence 3.1使用传统for循环 3.2使用C11范围for循环 3.3 使用迭代器 3.4使用STL算法 3.5转换为其他容器类型 NCollection_Sequence是Open CASCADE Technology (OCCT) 中的一个模板类&#x…

石子合并(区间dp)-java

石子合并问题是经典的区间dp问题&#xff0c;我们需要枚举中间端点k的情况从而来推出dp数组的值。 文章目录 前言 一、石子合并问题 二、算法思路 1.问题思路 2.状态递推公式 二、代码如下 代码如下&#xff08;示例&#xff09;&#xff1a; 2.读入数据 3.代码运行结果如下&am…

JS生成二维码.jquery.qrcode.min.js

jquery.qrcode.min.js下载地址 https://cdn.staticfile.org/jquery.qrcode/1.0/jquery.qrcode.min.js 1. 生成二维码到img标签 <div style"display:none;" id"qrcodeHide"><img id "qrcode"/>var qrcodeHide jQuery(#qrcodeHide).…

防火墙对于网络攻击都有哪些防御措施?

现如今随着网络技术的快速发展&#xff0c;给人们的生活带来了很多的便利&#xff0c;网络技术也被广泛地应用在各个领域和行业当中&#xff0c;但是在这个过程中也会面临各种网络安全的威胁&#xff0c;给所涉及的企业造成了很大的影响&#xff0c;所以防火墙这一技术&#xf…

yolov9直接调用zed相机实现三维测距(python)

yolov9直接调用zed相机实现三维测距&#xff08;python&#xff09; 1. 相关配置2. 相关代码2.1 相机设置2.2 测距模块2.2 实验结果 相关链接 此项目直接调用zed相机实现三维测距&#xff0c;无需标定&#xff0c;相关内容如下&#xff1a; 1. yolov4直接调用zed相机实现三维测…

LPRNet车牌识别模型训练及CCPD数据集预处理

LPRNet车牌识别模型训练及CCPD数据集预处理 1 LPRNet车牌识别模型训练 1.1 源码:LPRNet_Pytorch-master 源码官网:GitHub - sirius-ai/LPRNet_Pytorch: Pytorch Implementation For LPRNet, A High Performance And Lightweight License Plate Recognition Framework. 链…