约瑟夫环。

package demo;

import java.util.ArrayList;

public class Demo3 {
public static void main(String[] args) {
System.out.println(getLucklyNum(8));
}

public static int getLucklyNum(int num) {
ArrayList<Integer> list = new ArrayList<>(); // 创建集合存储1-NUM的对象
for (int i = 1; i <= num; i++) {
list.add(i);
}
int count = 1; // 是用来数数的 只要是3的倍数就删除掉
for (int i = 0; list.size() != 1; i++) { // 只要集合中人数不为1 就继续删除
if (i == list.size()) { // 只要i等于数组长度 就说明转了一圈了 重新开始
i = 0;
}
if (count % 3 == 0) { // 如果是3的倍数就删除
list.remove(i--);
}
count++;
}
return list.get(0);
}
}

原文地址:https://www.cnblogs.com/wangffeng293/p/13301973.html