面试题45:圆圈中最后剩下的数字
来源:互联网 发布:亮剑online知乎 编辑:程序博客网 时间:2024/06/11 03:03
题目:0,1,...,n-1这n个数字排成一个圆圈,从数字0开始每次从这个圆圈里删除第m个数字,求出这个圆圈里剩下的最后一个数字
常规思路:主要list的运用
代码:
#include <iostream> #include <list> using namespace std;int LastRemaining(unsigned int n,unsigned int m){if(n<1 || m<1)return -1;unsigned int i;list<int> numbers;for(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);}void main(){int result=LastRemaining(5,3);printf("%d\n",result);}
结果:
3
Press any key to continue
- 面试题45:圆圈中最后剩下的数字
- 面试题45:圆圈中最后剩下的数字
- 面试题45:圆圈中最后剩下的数字
- 面试题45:圆圈中最后剩下的数字
- 面试题45:圆圈中最后剩下的数字
- 面试题45—圆圈中最后剩下的数字
- 面试题 45: 圆圈中最后剩下的数字
- 面试题45:圆圈中最后剩下的数字
- 面试题49:圆圈中最后剩下的数字*
- 面试题45. 圆圈中最后剩下的数字
- 剑指Offer:面试题45 圆圈中最后剩下的数字
- 剑指offer 面试题45—圆圈中最后剩下的数字(约瑟夫环)
- 《剑指Offer》学习笔记--面试题45:圆圈中最后剩下的数字
- 【剑指Offer学习】【面试题45:圆圈中最后剩下的数字(约瑟夫环问题)】
- 剑指Offer面试题45(Java版):圆圈中最后剩下的数字
- 面试题45:圆圈中最后剩下的数字(约瑟夫环问题)
- 剑指offer之面试题45圆圈中最后剩下的数字
- 剑指Offer面试题45:圆圈中最后剩下的数字
- 1047. Student List for Course (25)
- 计算机科学中最重要的32个算法
- BNU 25588 Elevator Trouble【裸BFS】
- 边复习边写(树的操作)
- JAVA_WEB Struts2学习:使用验证框架进行校验JSP页面元素 反编译工具的配置 Strtuts2 国际化学习
- 面试题45:圆圈中最后剩下的数字
- linux wait()函数
- HibernateTemplate全解
- [C#]打开指定路径的文件夹
- Java多线程设计模式之线程池模式
- mac 搭建svn
- keepalived 安装
- 连续子数组的最大和
- 线程池模式比较-------ICE线程池模型------L/F领导者跟随者模式