50个人围成一圈数数,数到3的倍数时出圈,最后剩下的人是谁?

package com.other.example; import java.util.List; import java.util.LinkedList; public class Cycle { public static void main(String[] args) { System.out.println("该数字原来的位置是:" + cycle(50, 3)); System.out.println("我的笨方法:" + myIdea(50, 3)); } private static int cycle(int tatal, int k) { List list = new LinkedList(); for(int i = 1; i <= 50; i++) { list.add(i);//自动装箱 list,add(new Integer(i)); } int index = -1; while(list.size() > 1) { index = (index + k) % list.size(); list.remove(index--); } return list.get(0);//自动拆箱 list.get(0).intValue(); } private static int myIdea(int total, int k) { int[] arr = new int[total]; for (int i = 1; i <= total; i++) { arr[i-1] = i; } int flag = 0; while(isContinue(arr)) { for (int j = 0; j < arr.length; j++) { if(arr[j] != 0) { flag++; if(flag % k == 0) { arr[j] = 0; } } } } for (int i = 0; i < arr.length; i++) { if(arr[i] != 0) { return arr[i]; } } return 0; } private static boolean isContinue(int[] arr) { int count = 0; for (int i = 0; i < arr.length ;i++ ) { if(arr[i] != 0) { count++; } if (count>1) { return true; } } return false; } }

你可能感兴趣的:(Java代码,integer,list,string,class)