有些數(shù)的素因子只有 3渣刷,5鹦肿,7,請設(shè)計一個算法找出第 k 個數(shù)辅柴。注意箩溃,不是必須有這些素因子,而是必須不包含其他的素因子碌识。例如碾篡,前幾個數(shù)按順序應(yīng)該是 1,3筏餐,5开泽,7,9魁瞪,15穆律,21。
示例 1:
輸入: k = 5
輸出: 9
來源:力扣(LeetCode)
著作權(quán)歸領(lǐng)扣網(wǎng)絡(luò)所有导俘。商業(yè)轉(zhuǎn)載請聯(lián)系官方授權(quán)峦耘,非商業(yè)轉(zhuǎn)載請注明出處。
class Solution:
def getKthMagicNumber(self, k):
import heapq
nums = [1,3,5,7]
s,result = set(),1
my_list = []
heapq.heapify(my_list)
heapq.heappush(my_list, 1)
for _ in range(k+1):
result = heapq.heappop(my_list)
for i in nums:
temp = result * i
if temp not in s:
s.add(temp)
heapq.heappush(my_list, temp)
return result
def test_getKthMagicNumber():
s = Solution()
assert s.getKthMagicNumber(5) == 9