- 有一些數的素因子只有三、五、7,請設計一個算法,找出其中的第k個數。給定一個數int k,請返回第k個數。保證k小於等於100。
- 測試樣例:3 返回:7
import java.util.*;
public class KthNumber {
public int findKth(int k) {
int val = 1;
LinkedList<Integer> list3 = new LinkedList<>();
LinkedList<Integer> list5 = new LinkedList<>();
LinkedList<Integer> list7 = new LinkedList<>();
list3.push(1);
int val3, val5, val7;
while(k-- >= 0){
val3 = !list3.isEmpty() ? list3.peek() : Integer.MAX_VALUE;
val5 = !list5.isEmpty() ? list5.peek() : Integer.MAX_VALUE;
val7 = !list7.isEmpty() ? list7.peek() : Integer.MAX_VALUE;
val = Math.min(Math.min(val3, val5), val7);
if(val == val3){
list3.pop();
list3.addLast(val * 3);
list5.addLast(val * 5);
list7.addLast(val * 7);
}else if(val == val5){ //遞增的目的是小的已經被前面的找到過了
list5.pop();
list5.addLast(val * 5);
list7.addLast(val * 7);
}else{
list7.pop();
list7.addLast(val * 7);
}
}
return val;
}
}