package com.hanqi.count; // 逢三退一 输出留到最后值的索引; public class Count1 { //主方法 public static void main(String[] args) { Count1 c = new Count1(); System.out.println(c.count(6)); // 方法有返回值 , 传入数组长度(总共多少数); } // 逢3 退1; public int count (int in) { //声明一个boolean数组 boolean arr[] = new boolean[in]; for (int i = 0; i < arr.length; i++) { arr[i] = true; //把数组的值替换为 ture; } int count = arr.length ; //总计数(获取数组长度) int threecount = 0; // 3次循环计数 int index =0; //当前数组的序号 while (count > 1) { //只要还有 1个以上的值为true 就会一直运行 if(arr[ index ]) { threecount ++; // 值为treu 时+1 if(threecount == 3) { arr[index] = false; threecount = 0; count --; //进一遍总数减1 因为逢3去1 ; } } index ++; // 放在 if判断上面 arr.length 长度为500 但是序号是从0开始所以到499结束; if (index == arr.length) { index = 0; } //index ++; 放在 if判断底下归零后立马加1 所以不行(逻辑问题); } int ret = 0; // 遍历 留到最后为true的值得索引 for (int i = 0; i < arr.length; i++) { if (arr[i]) { // 值为true时输出i ,此时i为最后一个值的序号; //System.out.println(i); ret = i; break; } } return ret; } }
这道题提醒了我 换个思路看看;(用boolean数组解决问题)