发布时间:2026/7/11 5:17:41
算法题剖析:找出游戏的获胜者(三) 接上文我们来讲讲第二种解决方案方法二数学 递归思路和算法以下用 f(n,k) 表示 n 名小伙伴做游戏每一轮离开圈子的小伙伴的计数为 k 时的获胜者编号。当 n1 时圈子中只有一名小伙伴该小伙伴即为获胜者因此 f(1,k)1。当 n1 时将有一名小伙伴离开圈子圈子中剩下 n−1 名小伙伴。圈子中的第 k 名小伙伴离开圈子k 满足 1 ≤ k≤ n 且 k - k 是 n 的倍数。由于 1≤k′≤n因此 0≤k′−1≤n−1。又由于 k−k′ 是 n 的倍数等价于 (k-1)-(k-1)是 n 的倍数因此 k′−1(k−1)modnk′(k−1)modn1。当圈子中剩下 n−1 名小伙伴时可以递归地计算 f(n−1,k)得到剩下的 n−1 名小伙伴中的获胜者。令 xf(n−1,k)。由于在第 k 名小伙伴离开圈子之后圈子中剩下的 n−1 名小伙伴从第 k1名小伙伴开始计数获胜者编号是从第 k1名小伙伴开始的第 x 名小伙伴因此当圈子中有 n 名小伙伴时获胜者编号是 f(n,k)(k′modnx−1)modn1(kx−1)modn1。将 xf(n−1,k) 代入上述关系可得f(n,k)(kf(n−1,k)−1)modn1。代码Python3class Solution: def findTheWinner(self, n: int, k: int) - int: return 1 if n 1 else (k self.findTheWinner(n - 1, k) - 1) % n 1Javaclass Solution { public int findTheWinner(int n, int k) { if (n 1) { return 1; } return (k findTheWinner(n - 1, k) - 1) % n 1; } }C#public class Solution { public int FindTheWinner(int n, int k) { if (n 1) { return 1; } return (k FindTheWinner(n - 1, k) - 1) % n 1; } }Cclass Solution { public: int findTheWinner(int n, int k) { if (n 1) { return 1; } return (k findTheWinner(n - 1, k) - 1) % n 1; } };复杂度分析时间复杂度O(n)其中 n 是做游戏的小伙伴数量。需要计算的值有 n 个每个值的计算时间都是 O(1)。空间复杂度O(n)其中 n 是做游戏的小伙伴数量。空间复杂度主要取决于递归调用栈的深度为 O(n) 层。

相关新闻

2026/7/11 5:17:41

看懂大模型提速核心,通俗拆解KV Cache工作原理

用过ChatGPT、文心一言这类大语言模型的朋友,应该都有过直观体验,输入问题后模型会逐字输出答案,流畅度很高,但很少有人知道,模型每输出一个字,背后都在进行海量计算。很多人疑惑,为什么短文本回…

2026/7/11 5:12:41

IR2130 故障保护电路设计:过流检测与22mΩ采样电阻参数详解

IR2130 过流保护电路深度设计:22mΩ采样电阻的工程实践1. 过流保护机制的核心设计逻辑IR2130芯片内置的过流保护功能是电力电子系统可靠运行的关键保障。当ITRIP引脚电压超过0.5V阈值时,芯片会在400ns内快速关断所有输出通道,并通过FAULT引脚…

2026/7/11 5:12:41

AI辅助开发中的代码质量保障与工程实践指南

在数字化转型浪潮席卷各行各业的今天,人工智能(AI)技术已成为提升效率、优化决策的重要工具。然而,在实际开发与应用过程中,过度依赖AI输出而缺乏批判性思考,往往会导致项目陷入“垃圾进,垃圾出…

2026/7/11 6:12:43

Kafka 3.5 生产者事务实战:SpringBoot 集成实现 100% 消息不丢失

Kafka 3.5 生产者事务实战:SpringBoot 集成实现 100% 消息不丢失1. Kafka 事务核心机制解析在分布式系统中,消息传递的可靠性一直是开发者面临的重大挑战。Kafka 3.5 引入的事务机制(Transactional Producer)为解决这一问题提供了…

2026/7/11 6:12:43

pybind11混合编程合规性验证:从内存安全到多线程的实战指南

1. 项目概述:为什么我们需要关注pybind11的合规性?如果你正在用C写高性能计算核心,然后用pybind11给它包上一层Python的“糖衣”,让算法工程师和数据科学家们能愉快地调用,那你很可能已经踩过或者即将踩进一个深坑。这…

2026/7/11 6:12:43

DDD 聚合设计误区:对比3种电商‘订单’建模,避免数据一致性问题

DDD聚合设计实战:电商订单模型的三种解耦方案与一致性保障 引言:聚合设计的业务价值与技术挑战 在电商系统的核心交易链路中,订单模型的设计质量直接影响着系统的可维护性和扩展性。当用户提交包含多个商品的订单时,如何保证库存…

2026/7/11 6:12:43

大数据毕业设计-基于 Python 的时尚女装抖音号评论数据分析系统的设计与实现 基于 Python 的抖音女装评论情感挖掘分析系统(源码+LW+部署文档+全bao+远程调试+代码讲解等)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/7/11 6:12:43

STM32与AD7490的16位ADC接口设计与优化

1. AD7490与STM32F101ZG的硬件协同设计 1.1 AD7490关键特性解析 AD7490是一款16位、1MSPS吞吐率的逐次逼近型(SAR)ADC,采用5V单电源供电。其核心优势在于: 真正的16位无失码性能(INL2.5LSB) 灵活的模拟输入范围配置&#xff08…

2026/7/11 6:07:43

sizeof和隐式类型转换

sizeof和隐式类型转换 我们知道,sizeof 的操作数如果不是类型,是表达式的时候,可以省略掉后边的括号的。 sizeof 后边的表达式是不真实参与运算的,根据表达式的类型来得出大小。 sizeof 的计算结果是size_t 类型的。 那么。我们接…

2026/7/11 5:30:49

国内大模型选型与企业级落地实战指南

我不能提供任何关于访问境外网络信息的技术方案或变通方法。根据中国法律法规和网络管理要求,所有互联网服务必须遵守国家关于网络安全、数据安全和内容安全的规定。ChatGPT及其后续版本(如所谓“GPT-5”)是由境外机构研发的大语言模型&#…

2026/7/11 2:43:05

三步实战方案:高效获取智慧教育平台电子课本PDF的完整流程

三步实战方案:高效获取智慧教育平台电子课本PDF的完整流程 【免费下载链接】tchMaterial-parser 国家中小学智慧教育平台 电子课本下载工具,帮助您从智慧教育平台中获取电子课本的 PDF 文件网址并进行下载,让您更方便地获取课本内容。 项目…

2026/7/10 6:36:15

3个高效策略:快速掌握Axure中文界面配置

3个高效策略:快速掌握Axure中文界面配置 【免费下载链接】axure-cn Chinese language file for Axure RP. Axure RP 简体中文语言包。支持 Axure 11、10、9。不定期更新。 项目地址: https://gitcode.com/gh_mirrors/ax/axure-cn 还在为Axure RP的英文界面感…