剑指Offer面试题45圆圈中最后剩下的数字(约瑟夫环问题),面试题46求1+2+...+n
来源:互联网 发布:印度一夫多妻制 知乎 编辑:程序博客网 时间:2024/05/16 10:58
面试题45:圆圈中最后剩下的数字(约瑟夫环问题)
0,1…n-1这n个数字排成一个圆圈,从第一个人开始报数,数到m的人出局,然后从下一个人开始报数,求这个圈圈里剩下的最后一个数字。
思路:可用ArrayList模拟链表弄出一个圈,删到最后就剩一个数时输出,详见程序。
Java实现如下:
public class LastRemaining { static int lastRemaining(int n, int m) throws Exception{ if(n < 1 || m < 1) throw new Exception("wrong"); ArrayList<Integer> cirList = new ArrayList<>(); for(int i=0;i<n;i++) cirList.add(i); int cur = 0; // 开始位置下标 while(cirList.size() > 1) cur = deleteCirList(cirList, m, cur); return cirList.get(0); } //m是步长,cur是从谁开始数,它本身算第一次,所以每次开始时把下标减1。最后返回被删除者的下标,也是新一轮开始的下标。 static int deleteCirList(ArrayList<Integer> list, int m, int cur){ int tmp = cur-1; for(int i=0;i<m;i++){ tmp++; if(tmp == list.size()) tmp = 0; } list.remove(tmp); return tmp; } public static void main(String[] args) throws Exception { System.out.println(lastRemaining(5, 3)); }}
面试题46:求1+2+…+n
要求不能使用乘除法,循环,判断语句。
Java实现如下:
public class SumSolution { public static int sum = 0; public static boolean sumSolution(int n) { sum += n; return n != 1 && sumSolution(n - 1); } public static void main(String[] args) { sumSolution(100); System.out.println(SumSolution.sum); }}
阅读全文
0 0
- 剑指Offer面试题45圆圈中最后剩下的数字(约瑟夫环问题),面试题46求1+2+...+n
- 【剑指Offer学习】【面试题45:圆圈中最后剩下的数字(约瑟夫环问题)】
- 剑指offer面试题 圆圈中最后剩下的数字(约瑟夫环问题)
- 剑指offer 面试题45—圆圈中最后剩下的数字(约瑟夫环)
- 剑指Offer 面试题45:圆圈中最后剩下的数字(约瑟夫环问题,ZOJ 1088:System Overload类似)题解
- 面试题45:圆圈中最后剩下的数字(约瑟夫环问题)
- 剑指offer算法题之循环链表--约瑟夫问题,面试题45:圆圈中最后剩下的数字(补充:define和typedef)
- 剑指Offer:面试题45 圆圈中最后剩下的数字
- 《剑指Offer》学习笔记--面试题45:圆圈中最后剩下的数字
- 剑指Offer面试题45(Java版):圆圈中最后剩下的数字
- 剑指offer之面试题45圆圈中最后剩下的数字
- 剑指Offer面试题45:圆圈中最后剩下的数字
- 剑指offer——面试题45:圆圈中最后剩下的数字
- 剑指Offer系列-面试题45:圆圈中最后剩下的数字
- 剑指offer-面试题45-圆圈中最后剩下的数字
- 剑指offer 面试题45 圆圈中最后剩下的数字
- 剑指offer面试题45 圆圈中最后剩下的数字(java实现)
- 【剑指Offer】面试题45:圆圈中最后剩下的数字
- java实现文件复制功能
- Stack-----155. Min Stack
- GIT
- 设计模式原则——里氏替换原则
- 部署KVM虚拟化平台
- 剑指Offer面试题45圆圈中最后剩下的数字(约瑟夫环问题),面试题46求1+2+...+n
- MemCache解读
- ES6之-解构赋值
- Valid Parentheses
- 网易2018校招编程题集合6
- 在Pycharm上对用程序模仿Linux/Unix cat命令的一些理解
- 坐标系统
- Codeforces Round #428 (Div 2) A
- 打印1到最大的n位数-Java