----思路:利用三个队列,一个存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;
}
05-11 19:36