故事就不说了,我这个没啥好说的,for硬干。大佬莫笑!
public static void main(String[] args) {
// 结果 3 6 9 2 7 1 8 5 10 4
int[] m = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int n = 3; // 间隔
// 存放已选中数下标
List<Integer> listIndex = new ArrayList<>();
// 存放已选中数,顺序即是被选中的先后顺序
List<Integer> list = new ArrayList<>();
// 用死循环来实现绕圈选择,通过取余获得每次的检查的数下标
for (int i = 0; i >= 0; i++) {
n--;
// 如果此数已被选中,则下标后移即直接下一次循环,因为间隔已减1,故要回退
if (listIndex.contains(i % 10)) {
n++;
continue;
}
if (n == 0) {
n = 3;
list.add(m[i % 10]);
listIndex.add(i % 10);
// 结束循环
if (list.size() == m.length) {
break;
}
}
}
System.err.println(listIndex);
System.err.println(list);
}