本帖最后由 郑飞 于 2014-11-21 15:04 编辑
原创;P 就用了1个for2个if 还算比较简便 思路也不难 咱新手就图个思路 并不是为解题而解题 希望对楼主有帮助
- class Test
- {
- /*
- *50长度元素值全1的数组1个
- *count不断循环数组并累加所有元素值;
- *count逢3时,元素值改为0(为了下次count访问并累加该元素时不计数,count的存在就是为了逐步把每个元素值都改为0);
- *这时update++(因为count遇到3的倍数了,update记录);
- *当update为50的时候说明找到最后一个元素,返回角标+1;
- **/
- public static void main(String[] args)
- {
- int[] arr = new int[50];
- for(int i = 0;i<50;i++)
- arr[i] = 1;//定义一个长度50,元素值都为1的数组;
- for(int i =0,count = 0,update = 0;;i++)//上面说的很清楚了
- {
- i = i==50?0:i;//从角标0开始不断循环访问数组所有元素(i=50就重置为0);
- //如果上次count值不能被3整除,并且本次count能被3整除,说明该位置是1(0代表);
- if(count%3!=0&(count+=arr[i])%3==0)
- {
- arr[i]=0;//元素值改为0,让count无视它
- update++;//记录本次被3整除时事件
- }
- if(update==50)//当遇到50次被3整除后,说明最后一次访问的就是数组最后一个值为1的元素
- {
- System.out.println(i+1);//放回角标+1(位置)
- break;
- }
- }
- }
- }
复制代码 |