关闭

LintCode 丑数

888人阅读 评论(0) 收藏 举报
分类:

中等 丑数

20%
通过

设计一个算法,找出只含素因子357 的第 k 大的数。

符合条件的数如:3,5,7,9,15......

您在真实的面试中是否遇到过这个题? 
Yes
样例

如果k=4, 返回 9

挑战

要求时间复杂度为O(nlogn)或者O(n)


class Solution {
public:
    /*
     * @param k: The number k.
     * @return: The kth prime number as description.
     */
     template <class T> 
     T minnum (T a, T b, T c) {
         T temp  =  a > b ? b:a;
         return temp < c ? temp :c;
     }
    long long kthPrimeNumber(int k) {
        // write your code here
        long long *result = new long long[k];
        result [0] = 3;
        result [1] = 5;
        result [2] = 7;
        int a3 = 0;
        int a5 = 0;
        int a7 =0;
        for (int i = 3; i < k; ++i) {
            result[i] = minnum(result[a3] * 3, result[a5] * 5, result[a7] * 7);
            while (result[a3] * 3 <= result[i]) {
                ++a3;
            }
            while (result[a5] * 5 <= result[i]) {
                ++a5;
            }
            while (result[a7] * 7 <= result[i]) {
                ++a7;
            }
        }
        return result[k-1];
    }
};


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:69984次
    • 积分:1791
    • 等级:
    • 排名:千里之外
    • 原创:107篇
    • 转载:20篇
    • 译文:0篇
    • 评论:12条
    about me
    CS在读硕士一枚
    最新评论