class Solution:
def getKthMagicNumber(self, k: int) -> int:
dp = [0]*(k+1)
dp[0] = 1
# 三个指针分别指向三个列表头【第一个是以3为倍数的列表,第二个是以5为倍数的列表,第三个是以7为倍数的列表,在这三个数字中找最小的,再滑动指针】
l1,l2,l3 = 0,0,0
for i in range(1,k):
dp[i] = min(dp[l1]*3,dp[l2]*5,dp[l3]*7)
if dp[i] == dp[l1] * 3:
l1 += 1
if dp[i] == dp[l2] * 5:
l2 += 1
if dp[i] == dp[l3] * 7:
l3 += 1
return dp[k-1]
每日一道Leetcode - 面试题 17.09. 第 k 个数 [动态规划|三指针]
最新推荐文章于 2021-11-02 20:58:18 发布