算法思路是

1 用一个变量j标记走到了了多少步,初始为0,表示走到了第一个数。

2、让一个指针每次都向前移动2个不为0的数,然后打印出这个数,再置这个数为0

3、当数组的每一项都为0的时候,说明已经全部找完了。

代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
package algorithms.chapter1;
 
public class YueSeFuCycle {
 
    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        int[] test = {1,2,3,4,5,7,8,9};
        getOutItem(test, 2);
 
    }
    public static void getOutItem(int[] items, int interval){
        int j = 0;
         
            //在数组全部为0,时候跳出循环,j表示一共向前跑了多少步
            //初始化的时候j为0,j
                while(!isEmpty(items)){
                    //寻找正好寻到2个不为0的数的位置
                    int k = 0;
                    while(true){
                        if(items[j % items.length] != 0){
                            k++;
                        }
                        if(k == 2){
                            System.out.println(items[j % items.length]);
                            items[j % items.length] = 0;
                            break;
                        }
                        j++;
                         
                    }
                     
                }
                     
            }
     
     
     
     
    public static boolean isEmpty(int[] items){
        boolean flag = true;
        for(int i = 0; i < items.length; i++ ){
            if(items[i] != 0){
                flag =false;
            }
        }
        return flag;
    }
     
 
}