7.7---找只含3,5,7的数(CC150)

----思路:利用三个队列,一个存3,一个存5,一个存7.

然后,3*3的都放第一个。然后3*5,5*5的放第二个。然后,3*7,5*7,7*7的都放第三个。

答案:

    public static int findKth(int k){
        ArrayList<Integer> res = new ArrayList();
        res.add(1);
        int flag = 0;
        int num = 0;
        int tmp  = 0;
        Queue<Integer> queue3 = new LinkedList();
        Queue<Integer> queue5 = new LinkedList();
        Queue<Integer> queue7 = new LinkedList();
        
        queue3.add(3);
        queue5.add(5);
        queue7.add(7);
        
        
        for(int i = 0; i < k; i++){
            int min = 0;
            if(queue3.peek() < queue5.peek()){
                if(queue3.peek() < queue7.peek()){
                    flag = 3;
                }
                else{
                    flag = 7;
                }
            }
            else{
                if(queue5.peek() < queue7.peek()){
                    flag = 5;
                }
                else{
                    flag = 7;
                }
            }
            if(flag == 3){
                 tmp = queue3.poll();
                    queue3.add(tmp * 3);
                    queue5.add(tmp * 5);
                    queue7.add(tmp * 7);
                    
            }
            else if(flag == 5){
                 tmp = queue5.poll();
                    res.add(tmp);
                    queue5.add(tmp * 5);
                    queue7.add(tmp * 7);
            }
            else if(flag == 7){
                 tmp = queue7.poll();
                    res.add(tmp);
                    queue7.add(tmp * 7);
            }
            flag = 0;
        }
        
        return tmp;
    }
原文地址:https://www.cnblogs.com/yueyebigdata/p/5091815.html