这个题目很值得研究。
下面是代码:
import java.util.*;
public class KthNumber {
public int findKth(int k) {
// write code here
if(k<0)
return 0;
int val = 0;
Queue<Integer> q3 = new LinkedList<Integer>();
Queue<Integer> q5 = new LinkedList<Integer>();
Queue<Integer> q7 = new LinkedList<Integer>();
q3.add(1);
for(int i = 0;i<=k;i++){
int v3 = q3.size()>0?q3.peek():Integer.MAX_VALUE;
int v5 = q5.size()>0?q5.peek():Integer.MAX_VALUE;
int v7 = q7.size()>0?q7.peek():Integer.MAX_VALUE;
val = Math.min(v3,Math.min(v5,v7));
if(val==v3){
q3.remove();
q3.add(val*3);
q5.add(val*5);
}else if(val ==v5){
q5.remove();
q5.add(val*5);
}else{
q7.remove();
}
q7.add(val*7);
}
return val;
}
}