今天老大发了一个简单的算法题给我,研究一下试着谢了一下,在此和小伙伴们分享一下:
题目是:
13个小朋友围成一圈做游戏,规则是从某一个小朋友开始顺时针方向数数,谁数到3,该小朋友离开,接着下一位继续从1开始数,直到最后一位小朋友离开,求最后一个离开的小朋友他的座位号是多少?(假设第一次开始的座位号为0)
我的算法如下,小伙伴也来分享一下你的算法吧:
public Integer myGetResult() {
int[] arr = new int[13];
int count =0;
int j = 0;
for (int i = 0; i < 13;) {
if (arr[i] != -1 ) {
j++;
}
if (j % 3 == 0 && arr[i] != -1) {
arr[i] = -1;
count++;
if(count == 13) return i;
}
i ++;
if(i == 13) i = 0;
}
return null;
}