单链表经典算法OJ题--牛客(环形链表的约瑟夫问题

链接:环形链表的约瑟夫问题_牛客题霸_牛客网【点击即可跳转】

著名的Josephus问题
据说著名犹太历史学家 Josephus有过以下的故事:
  在罗马人占领乔塔帕特后,39 个犹太⼈与 Josephus及他的朋友躲到⼀个洞中,39个犹太⼈决定宁愿死也不要被⼈抓到,于是决定了⼀个自杀方式,41个⼈排成⼀个圆圈,由第1个⼈开始报数,每报数到第3人,该人就必须自杀,然后再由下一个重新报数,直到所有⼈都自杀身亡为止。
然而Josephus 和他的朋友并不想遵从,Josephus要他的朋友先假装遵从,他将朋友与自己安排在 第16个与第31个位置,于是逃过了这场死亡游戏。

思路:

1.创建带环链表

2.count计数(报到m,就删掉)

代码实现:

/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可** * @param n int整型 * @param m int整型 * @return int整型*/typedef struct ListNode ListNode;
//创建节点
ListNode* BuyNode(int x)
{ListNode* node=(ListNode*)malloc(sizeof(ListNode));if(node==NULL){exit(1);}node->val=x;node->next=NULL;return node;
}//创建带环链表
ListNode* createNode(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=createNode(n);ListNode*pcur=prev->next;int count=1;while(pcur->next!=pcur)//只有一个节点,就跳出循环{if(count==m) {prev->next=pcur->next;free(pcur);  //销毁pcur节点pcur=prev->next;count=1;}else {prev=pcur;pcur=pcur->next;count++;}}return pcur->val;//此时剩下的一个节点 就是要返回的节点里的值
}

感谢观看,如果对你有所帮助的话,点赞支持一下吧^.^

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

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

相关文章

部标JT809开源(go版本)

GitHub - Yordroid/jt809_server: 部标809下级平台&#xff0c;支持2011&#xff0c;2013,2019 欢迎大家给波星

网络接口类型

第二天&#xff08;网络、接口类型&#xff09; 网络类型&#xff1a; 1、点到点&#xff1a;在一个网段内只能存在&#xff0c;两个物理节点 MA --- 多路访问 -- 在一个网段内物理节点的数量不限制 MA --- BMA NBMA 2、BMA --- 广播型多路访问 3、NBMA --- 非广播型多路…

智能鱼缸-设计说明书

设计摘要&#xff1a; 本论文以STC89C52单片机为核心控制器&#xff0c;构建了一套智能鱼缸系统。该系统由中控部分、输入部分和输出部分组成。中控部分采用STC89C52单片机&#xff0c;负责获取输入部分数据并进行处理&#xff0c;控制输出部分。输入部分包括TDS水质水温检测模…

MySQL:查询一个由逗号分隔的字符串数组,并检查其中指定元素是否等于某个值

使用SUBSTRING_INDEX函数 SELECT * FROM TABLE_NAME WHERE SUBSTRING_INDEX(SUBSTRING_INDEX(status, ,, 2), ,, -1) 1SUBSTRING_INDEX()函数 用于提取字符串中的子字符串。函数有三个参数&#xff1a; 第一个参数是源字符串&#xff0c;这是您要从中提取子字符串的字符串。…

Axure RP移动端交互元件库/交互原型模板

作品类型&#xff1a;元件库/原型模板 更新日期&#xff1a;2023-12-04 当前版本&#xff1a;V1.3 适用范围&#xff1a;App应用/小程序 Axure版本&#xff1a;Axure 9.0均可打开 文件大小&#xff1a;36.7M 历时两个月制作并整理了手机移动端常用的75种组件、90个常用界面模板…

Hadoop复习(上)

目录 一 绪论 1 大数据5v特点 --1.6 2 Google三驾马车 GFS MapReduce BigTable --1.18 3 Hadoop的特点 --1.23 4 Hadoop生态系统 (教材p6) 6 NoSQL有哪些 二 HDFS架构 1 三大基本组件 --2.1.2 2 HDFS特性和局限性(教材p38) --2.1.4-5 3 HDFS block 4 HDFS守护进程 …

设计模式六大原则之 接口分离原则

文章目录 概念比较代码示例优势 小结 概念 要为各个类建立它们需要的专用接口&#xff0c;而不要试图去建立一个很庞大的接口供所有依赖它的类去调用。 比较 概念有了&#xff0c;再来看看比较下吧&#xff0c;和单一职责比较比较。 接口隔离原则和单一职责都是为了提高类的…

pyenv 之 python 多版本管理(win11)

1. 背景 常常会用到Python的多个版本&#xff0c;因此可以使用Pyenv来对Python版本进行管理。 2. win11下载 pyenv 在终端执行下载语句&#xff1a; pip install pyenv-win --target D:\software\pyenv 其中 D:\software\pyenv 为你想要下载到的文件目录&#xff0c;建议在 …

数字功放-改善液晶显示屏音频性能,重塑音频体验

随着液晶电视、液晶显示器以及等离子电视屏幕的尺寸不断增大&#xff0c;音频性能要求相应提高&#xff1b;数字功放芯片作为音频解决方案&#xff1b;不仅为音频设备带来更高的效率和更低的功耗&#xff0c;同时在显示屏上进一步提高了平板显示器的音质&#xff0c;使之具有了…

常用正则 JS 持续更新

应用版本号正则验证 正则判断版本号&#xff08;如&#xff1a;1.2.3 或 1.2.3.4&#xff09;&#xff0c;不允许出现 0.x.x&#xff1b;01.x.x; x.0x.x; x.00.x&#xff1b; x.x.00; x.x.0x/ ^ ([ 1-9 ] \d | [ 1-9 ])( . ([ 1-9 ] \d | \d )) {2,3} $ /0-10 保留一位小数的数…

Git系列:git add 被忽视的操作技巧

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

[Linux]一篇文章带你全面理解信号

文章目录 初识信号一、什么是信号二、为什么要有信号 看见信号一、先见一下Linux中的信号&#xff1a;二、如何产生信号三、自定义信号的处理行为&#xff08;自定义捕捉&#xff09; 了解信号一、信号的保存二、block、pending表使用代码查看三、一些倔强的&#xff0c;无法被…

排列三利用大数据预测

排列三是一种基于随机数字生成的游戏&#xff0c;因此从纯数学的角度来看&#xff0c;利用大数据进行预测并不能确保中奖。然而&#xff0c;大数据和数据分析确实可以为我们提供一些参考和指导&#xff0c;帮助我们在投注时做出更明智的决策。 首先&#xff0c;大数据可以帮助…

【Redis】Redis键值存储

大家好&#xff0c;我是白晨&#xff0c;一个不是很能熬夜&#xff0c;但是也想日更的人。如果喜欢这篇文章&#xff0c;点个赞&#x1f44d;&#xff0c;关注一下&#x1f440;白晨吧&#xff01;你的支持就是我最大的动力&#xff01;&#x1f4aa;&#x1f4aa;&#x1f4aa…

深度解读DreamFusion:一站式AI解决方案

DreamFusion是一款备受瞩目的人工智能解决方案&#xff0c;它整合了多种AI技术&#xff0c;为用户提供了一站式的解决方案。本文将全面解读DreamFusion&#xff0c;探讨其特点、功能和应用场景&#xff0c;助您深入了解这一创新工具。 1. 特点概述 DreamFusion具备以下显著特…

前端面试题日常练-day08 【面试题】

题目 希望这些选择题能够帮助您进行前端面试的准备&#xff0c;答案在文末。 1. 在 JavaScript 中&#xff0c;以下哪个方法可以用于获取数组的长度&#xff1f; A) length()B) size()C) count()D) push()2. 下列哪个 HTML 标签用于创建无序列表中的列表项&#xff1f; A) &…

用wxPython和PyMuPDF将PNG图像合并为PDF文件

在日常工作中,我们经常需要将多个图像文件合并到一个PDF文档中,以便于查看、共享或存档。虽然现有的一些工具可以实现这一功能,但开发一个自定义的GUI工具可以更好地满足特定需求,并提供更好的用户体验。 在本文中,我将介绍如何使用Python、wxPython和PyMuPDF库创建一个简单的…

基于SpringBoot设计模式之创建型设计模式·生成器模式

文章目录 介绍开始架构图样例一定义生成器定义具体生成器&#xff08;HTML格式、markdown格式&#xff09;实体类HTML格式生成器MarkDown格式生成器 测试样例 总结优点缺点 介绍 将一个复杂对象的构建与它的表示分离&#xff0c;使得同样的构建过程可以创建不同的表示。   如…

flowable工作流设置审批人为指定角色+部门的实现方式

一、绘制流程图页面配置 1、指定固定审批角色组织的实现 如上图红框部分&#xff0c;需要修改此处为需求对应。比如此时红框不支持指定某个部门下的指定角色这种组合判断的审批人。则需要修改页面变成选完角色同时也选择上部门统一生成一个group标识。 修改完后&#xff0c;生…

股指期货基差衡量的是什么?

在股指期货市场中&#xff0c;基差、升水和贴水是三个关键的术语&#xff0c;这些基差衡量的是现货市场的价格与期货市场的价格之间的差异。 一、基差&#xff1a;现货与期货的价差 1. 定义&#xff1a;基差是指现货价格与相应期货合约价格之间的差额。计算方式是现货价格减去…