LintCode 丑数

中等 丑数
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];
    }
};


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值