第k個數

  • 有一些數的素因子只有三、五、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;
    }

}
相關文章
相關標籤/搜索