面试题 17.09. 第 k 个数

有些数的素因子只有 3,5,7,请设计一个算法找出第 k 个数。注意,不是必须有这些素因子,而是必须不包含其他的素因子。例如,前几个数按顺序应该是 1,3,5,7,9,15,21。

示例 1:

输入: k = 5

输出: 9

1.dp

2.队列

class Solution:
    def getKthMagicNumber(self, k: int) -> int:
        p3=p5=p7=0
        dp=[0 for _ in range(k)]
        dp[0]=1
        for i in range(1,k):
            dp[i]=min(dp[p3]*3,dp[p5]*5,dp[p7]*7)
            if dp[i]==dp[p3]*3:p3+=1
            if dp[i]==dp[p5]*5:p5+=1
            if dp[i]==dp[p7]*7:p7+=1
        return dp[-1]

class Solution:
    def getKthMagicNumber(self, k: int) -> int:
        p3=p5=p7=0
        res=[1]
        while len(res)<k:
            res.append(min(res[p3]*3,res[p5]*5,res[p7]*7))
            if res[-1]==res[p3]*3:p3+=1
            if res[-1]==res[p5]*5:p5+=1
            if res[-1]==res[p7]*7:p7+=1
        return res[k-1]

 

©️2020 CSDN 皮肤主题: 创作都市 设计师:CSDN官方博客 返回首页