发布时间:2026/7/10 2:13:25
算法题剖析:找出游戏的获胜者(二) 接上文我们来讲讲解决方案方法一模拟 队列思路和算法最直观的方法是模拟游戏过程。使用队列存储圈子中的小伙伴编号初始时将 1 到 n 的所有编号依次加入队列队首元素即为第 1 名小伙伴的编号。每一轮游戏中从当前小伙伴开始数 k 名小伙伴数到的第 k 名小伙伴离开圈子。模拟游戏过程的做法是将队首元素取出并将该元素在队尾处重新加入队列重复该操作 k-1 次则在 k−1 次操作之后队首元素即为这一轮中数到的第 k 名小伙伴的编号将队首元素取出即为数到的第 k 名小伙伴离开圈子。上述操作之后新的队首元素即为下一轮游戏的起始小伙伴的编号。每一轮游戏之后圈子中减少一名小伙伴队列中减少一个元素。重复上述过程直到队列中只剩下 1 个元素该元素即为获胜的小伙伴的编号。代码Python3class Solution: def findTheWinner(self, n: int, k: int) - int: q deque(range(1, n 1)) while len(q) 1: for _ in range(k - 1): q.append(q.popleft()) q.popleft() return q[0]Javaclass Solution { public int findTheWinner(int n, int k) { QueueInteger queue new ArrayDequeInteger(); for (int i 1; i n; i) { queue.offer(i); } while (queue.size() 1) { for (int i 1; i k; i) { queue.offer(queue.poll()); } queue.poll(); } return queue.peek(); } }C#public class Solution { public int FindTheWinner(int n, int k) { Queueint queue new Queueint(); for (int i 1; i n; i) { queue.Enqueue(i); } while (queue.Count 1) { for (int i 1; i k; i) { queue.Enqueue(queue.Dequeue()); } queue.Dequeue(); } return queue.Peek(); } }Cclass Solution { public: int findTheWinner(int n, int k) { queueint qu; for (int i 1; i n; i) { qu.emplace(i); } while (qu.size() 1) { for (int i 1; i k; i) { qu.emplace(qu.front()); qu.pop(); } qu.pop(); } return qu.front(); } };复杂度分析时间复杂度O(nk)其中 n 是做游戏的小伙伴数量k 是每一轮离开圈子的小伙伴的计数。初始时需要将 n 个元素加入队列每一轮需要将 k 个元素从队列中取出将 k−1 个元素加入队列一共有 n−1 轮因此时间复杂度是 O(nk)。空间复杂度O(n)其中 n 是做游戏的小伙伴数量。空间复杂度主要取决于队列队列中最多有 n 个元素。

相关新闻

2026/7/10 2:08:25

LCD1602驱动移植实战:从51单片机到STM32的5个关键步骤与引脚配置

LCD1602驱动移植实战:从51单片机到STM32的5个关键步骤与引脚配置 在嵌入式开发领域,LCD1602液晶屏因其价格低廉、接口简单而广受欢迎。许多开发者最初接触LCD1602都是在51单片机平台上,但当项目需要升级到性能更强的STM32时,如何将…

2026/7/10 3:13:29

上海超薄PCB回收深度评测:环保与价值的双重突围

在如今电子废弃物愈发成为“城市矿山”的状况下, 一块厚度还不及指甲盖的超薄PCB(印刷电路板)的背后, 所暗藏的, 不仅仅是贵金属回收率高达90%以上, 更是对环保技术以及产业逻辑的一场严峻考验。 本人身为长期留意电子废弃物处理的自媒体博主, 近期针对…

2026/7/10 3:13:29

2026年苏锡常宁沪GEO优化服务平台推荐

2026年苏锡常宁沪GEO优化服务平台推荐为什么需要推荐苏锡常宁沪GEO优化服务平台?苏州、无锡、常州、南京、上海作为长三角核心经济增长极,产业基础雄厚,制造业集群发达,拥有超20万家工业企业,其中中小企业占比超90%。随着数字经济持续深化,企业对互联网营销的需求愈发迫切,尤其…

2026/7/10 3:08:28

Blockly+AI嵌入式IDE:面向新手的硬件开发范式革新

1. 项目概述:这不是另一个图形化玩具,而是一次嵌入式开发范式的试探性突围“硬件版 Cursor”这个说法一出来,我手里的咖啡杯就停在半空——不是因为兴奋,而是本能地皱眉。Cursor 在软件开发圈里是什么地位?它不是个代码…

2026/7/9 1:39:10

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

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

2026/7/10 2:34:05

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

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

2026/7/10 0:02:49

5大实战技巧:用ExifToolGUI轻松解决照片元数据管理难题

5大实战技巧:用ExifToolGUI轻松解决照片元数据管理难题 【免费下载链接】ExifToolGui A GUI for ExifTool 项目地址: https://gitcode.com/gh_mirrors/ex/ExifToolGui 你是否曾为整理旅行照片时发现拍摄时间错乱而头疼?是否需要在数百张照片中批量…

2026/7/9 5:30:41

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的英文界面感…