约瑟夫环

约瑟夫环运作如下:
1、一群人围在一起坐成 [2] 环状(如:N)
2、从某个编号开始报数(如:K)
3、数到某个数(如:M)的时候,此人出列,下一个人重新报数
4、一直循环,直到所有人出列 ,约瑟夫环结束

数数,数是3的倍数,则移除该数:

	public static int getNum(int num) {
        // 创建集合,存储 1 到 num 的对象
        ArrayList<Integer> list = new ArrayList<>();
        for (int i = 1; i <= num; i ++) {
            list.add(i);
        }
        
        // 用来数数,只要是3的倍数,就remove
        int count = 1;
        // 只要集合中元素数不等于1,就remove
        for (int i = 0; list.size() != 1; i ++) {
            // 如果i增长到集合 最大的索引 + 1 时,重新归零
            if (i == list.size()) {
                i = 0;
            }

			// 条件
            // 如果是3的倍数,就remove
            if (count % 3 == 0) {
                list.remove(i);
                i --;
            }
            
            // 累加 
            count ++;
        }

        return list.get(0);
    }

你可能感兴趣的:(Java)