本文主要是介绍圆圈中最后剩下的数字(Java),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目:
0, 1,....., n - 1这n个数字排成一个圆圈,从数字0开始每次从这个圆圈里删除第m个数字。求出这个圆圈里剩下的最后一个数字。
代码实现:
一:利用数组实现
public static int getLastNum(int n, int m){if(n < 1 || m < 1){ //表示输入的非法return -1;}int num[] = new int[n];int step = 0; //用来统计步骤int i = -1; //用来循环使用int count = n;while(count > 0){i++;if(i >= n){i = 0; //从0重新开始}if(num[i] == -1){ //跳过被删除的对象continue;}step++; //记录已经走过的if(step == m){ //找到被删除的对象num[i] = -1;step = 0;count--;}}return i;
}
二:利用链表实现
public static int getLastNum(int n, int m){if(m < 1 || n < 1){return -1;}ArrayList<Integer> list = new ArrayList<Integer>();
这篇关于圆圈中最后剩下的数字(Java)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!