剑指offer之圆圈最后剩下的数

1 问题 

求圆圈最后剩下的数,比如数组0, 1, 2 ,3 ,4围城一个环,我们每次去掉第三个数字,删除的前4个数字依次是2, 0, 4, 1,最后剩下的数字是3

                  04               13           2

 

 

 

 

 

 

 

 

2 思路

我们用list,我们要支持环就这样,如果发现当前指针指向是尾巴的时候,我们把它指向链表的开始。

 

 

 

 

 

 

 

 

 

3 代码实现

#include <iostream>
#include <list>using namespace std;int getIndex(int n, int m)
{if (n < 1 || m < 1){return -1;}list<int> numbers;for (int i = 0; i < n; ++i){numbers.push_back(i);}list<int>::iterator current = numbers.begin();while(numbers.size() > 1){for(int i = 1; i < m; ++i){current++;//指针向右移动的时候需要判断是否到了数组尾巴if (current == numbers.end()){current = numbers.begin();}}//指针向右移动的时候需要判断是否到了数组尾巴list<int>::iterator next = ++current;if (next == numbers.end()){next = numbers.begin();}current--;//删除指定的元素numbers.erase(current);current = next;}return *(current);
}int main()
{int a[] = {0, 1, 2, 3, 4};int index = getIndex(5, 3);if (-1 != index){std::cout << a[index] << std::endl;}return 0;
}

 

 

 

4 运行结果

3

 

 

 

5 总结

如果我们需要环的数据结构,我么可以使用list数据结构,然后当指针指向尾巴的时候我们指向头。

list<int> numbers;
for (int i = 0; i < n; ++i)
{numbers.push_back(i);
}
list<int>::iterator current = numbers.begin();
for (int i = 1; i < m; ++i)
{++current;if (current == numbers.end()){current = numbers.begin();}
}	

 

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

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

相关文章

如何获取 Linq 查询结果集合中的索引?

咨询区 Guy我有下面一段伪代码&#xff1a;string[] s {"zero", "one", "two", "three", "four", "five"};var x s .Select((a,i) > new {Value a, Index i}) .Where(b > b.Value.StartsWith("t&…

AirTest 基本使用及框架浅剖析——五分钟上手制作游戏辅助

简介 Airtest Project 是为编写自动化脚本&#xff0c;达到提升测试效率的一整套解决方案。它可以轻松的扩展到多平台、多引擎上&#xff1b;如基础的 Android和IOS手机应用、App&#xff1b;Windows上的应用等。 学习使用 Airtest Project 很容易&#xff0c;由于 Airtest P…

计算机组成原理xchg,8088数据传送指令-计算机组成原理与汇编语言-电子发烧友网站...

3.2.1 数据传送指令1. MOVOPRD1,OPRD2MOV是操作码&#xff0c;OPRD1和OPRD2分别是目的操作数和源操作数。该指令可把一个字节或一个字操作数从源地址传送到目的地址。源操作数可以是累加器、寄存器、存贮器以及立即操作数&#xff0c;而目的操作数可以是累加器、寄存器和存贮器…

Chrome浏览器常见问题及解决方案集锦

Chrome是一款非常优秀的浏览器,尤其在网页调试方面出类拔萃,深得本人的喜欢。但是在使用的过程中,总有一些问题会困扰大家,现将一些常见问题及解决方案列举出来,供参考。 1. Chrome下遇到该网页已屏蔽插件adobe flash player的解决办法 适合以下情形: (1)确定在电…

Facebook用户遭遇千年虫:瞬间有了46年老友

一些Facebook用户今天碰到了一个有趣的bug&#xff0c;系统提示他们与好友有了46年长的好友关系。要知道&#xff0c;Facebook还不到15岁&#xff0c;很多用户也没有46岁的高龄。Facebook一直没有透露产生这个bug的原因&#xff0c;但它说已经意识到该问题。“我们已经确定了这…

ASP.Net 验证正则表达式

整数或者小数&#xff1a;^[0-9]\.{0,1}[0-9]{0,2}$ 只能输入数字&#xff1a;"^[0-9]*$"。只能输入n位的数字&#xff1a;"^\d{n}$"。只能输入至少n位的数字&#xff1a;"^\d{n,}$"。只能输入m~n位的数字&#xff1a;。"^\d{m,n}$"只…

python123输出hello world_Python基础:输入与输出

输出print()函数&#xff1a;print()函数示例如下&#xff1a;>>>print(1)1>>> print(Hello World)Hello World>>> a 1>>> b a>>> print(a,b)1 a扩展部分&#xff1a;(初学不看)回过头来看print()函数的语法&#xff1a;print(…

(上)python3 selenium3 从框架实现代码学习selenium让你事半功倍

本文感谢以下文档或说明提供的参考。 Selenium-Python中文文档 Selenium Documentation Webdriver 参考 如有错误欢迎在评论区指出&#xff0c;作者将即时更改。 环境说明 操作系统&#xff1a;Windows7 SP1 64python 版本&#xff1a;3.7.7浏览器&#xff1a;谷歌浏览器浏览…

剑指offer之滑动窗口的最大值

1 问题 给定一个数组和滑动窗口的大小&#xff0c;请找出所有滑动窗口里的最大值&#xff0c;列如&#xff0c;数组&#xff5b;2,3,4,2,6,2,5,1&#xff5d;的滑动窗口大小是3&#xff0c;一起6个滑动窗口&#xff0c;分别是{4&#xff0c;4&#xff0c;6&#xff0c;6&#…

.NET 7 中的 HostApplicationBuilder

.NET 7 Preview 3 引入的 HostApplicationBuilderIntro在 .NET 6 中&#xff0c;ASP.NET Core 引入了 Minimal API&#xff0c;对于简单的应用使用 Minimal API 我们可以使用非常精简的代码来实现我们的 API&#xff0c;在 .NET 7 Preview 3 中&#xff0c;引入了一个 HostAppl…

SQL Server 2008 R2 Developer Edition图文安装教程

本文主要以截图的方式,详细说明SQL Server 2008 R2 Developer Edition的安装过程。 1、双击安装包中的setup.exe,如下图,点击“安装”→“全新安装或现有安装添加功能”。 2、点击“确定”。 3、点击“下一步”。

计算机应用基础851,最新2020秋广东开放大学计算机应用基础本科上传资料作业2文档(2页)-原创力文档...

Sheet2sheet1姓名迟春艳宋灵辉任慧霞张玉鹏李卫东付祖荣焦中明杨丹妍张积盛王继锋王永隆陶春光刘炳光吕秀涛赵业绵齐晓鹏王晶晶张秀双姜殿琴车延波闫少林李安娜盖玉艳王建东于玲云周琳娜王瑞欣学生成绩表期中成绩期末成绩总成绩籍贯陕西江西河北山东湖南广东上海辽宁北京湖北山…

复利计算评价博客

评价&#xff1a; 201406114202 蔡彩虹&#xff08;1&#xff09; http://www.cnblogs.com/caicaihong/p/5393335.html 201406114207 甘佳萍&#xff08;2&#xff09; http://www.cnblogs.com/gjpg/p/5393501.html 201406114239 赖文亮&#xff08;3&#xff09; http://www.c…

地理模块化施工的优点_模块化建筑适合学校的6个原因

原标题&#xff1a;模块化建筑适合学校的6个原因我们正处于模块化建筑的新时代&#xff0c;学校建筑能从这种创新和有效的建筑方法中受益。最先进的工厂制造——减少制造时间; 提高施工质量; 更具环境可持续性; 减少现场工作和干扰学校的正常作息; 同时在项目期间提供更好的健康…

新款ATM恶意软件Alice 可对抗动态分析 但目前需要物理接触主机

趋势科技&#xff08;Trend Micro&#xff09;安全公司的研究人员警告称&#xff0c;新发现的恶意软件家族主要针对ATM机&#xff08;自动取款机&#xff09;&#xff0c;唯一目的就是要掏空ATM机保险箱里的现金。 alice软件是什么 这款恶意软件被称为“Alice”&#xff0c;是迄…

(下)python3 selenium3 从框架实现代码学习selenium让你事半功倍

上一篇博文简要 在上一篇博文中已得知&#xff1a;使用 execute 向远程服务器发送请求会通过 webdriver 与浏览器交互&#xff0c;且发送已定义的命令常量可获得一些相关信息。 其中 execute 方法实现已经在上一篇博文中有实现说明。并且在我们已经知道 webdriver基类&#x…

剑指offer之翻转单词顺序

1 题目 输入一个英文橘子&#xff0c;翻转句子中的单词顺序&#xff0c;但是单词内字符串的顺序不变&#xff0c;简单起见&#xff0c;标点符号和普通字符字母一样处理&#xff0c;例如输入字符串"I am a student.",则输出"student. a am I" 2 思路 先…

【空间数据库技术】ArcSDE 10.1安装配置与企业级地理空间数据库的建立及连接

1、工具: (1)ArcGIS Desktop 10.1 (2)SQL Server 2008 R2 (3)ArcSDE 10.1 2、安装过程 (1)ArcGIS Desktop 10.1的安装 请参照:ArcGIS 10.2 Desktop完全破解图文安装教程 (2)SQL Server 2008 R2的安装 请参照:SQL Server 2008 R2 Developer Edition图文安装教…

点对点 客户端-服务器 聊天程序

服务器&#xff0c;客户端都是父进程、子进程分别负责发送、接收字符串。 另外使用了信号函数来发送和接收处理信号&#xff0c;比如当子进程结束时&#xff0c;传递一个信号给父进程&#xff0c;然后父进程会执行信号处理函数。 服务器端&#xff1a; 1 #include<stdio.h&g…

C# 使用压缩流和 Brotli

如前所述&#xff0c;流的一个特性是可以将它们链接起来。为了压缩流&#xff0c;只需要创建 DeflateStream&#xff0c;并给构造函数传递另一个流(在这个例子中&#xff0c;是写入文件的outputStream)&#xff0c;使用 CompressionMode. Compress 表示压缩。使用 Write方法或其…