package
0.0.0-20230809123828-b071cee2968a
Repository: https://github.com/codehanhan/leetcode-go.git
Documentation: pkg.go.dev
# README
面试题 17.09.第 k 个数
1. 题目描述
有些数的素因子只有 3,5,7,请设计一个算法找出第 k 个数。注意,不是必须有这些素因子,而是必须不包含其他的素因子。例如,前几个数按顺序应该是 1,3,5,7,9,15,21。
示例 1:
输入: k = 5
输出: 9
标签
哈希表
数学
动态规划
堆(优先队列)
2. 解题
由题意的,某一个满足结果的数,一定是之前的某个 resultA3 或者是 resultB5 或者是 resultC*7 的结果
并且结果一定是 这三个乘积的最小值,
因此,只要能够记录 resultA、resultB、resultC 的值,再相互与 3、5、7 相乘,取其中的最小值,就是当前的目标值!
需要注意,resultA、B、C 是不断变化的,并且都应该是由小到大,谁被选中,就应该取下一个值!
例如 3 就是 resultA=1 的结果,此时 B、C 都等于 1,此后 resultA 取下一个值 3
例如 5 就是 resultB=1 的结果,此时 resultA=3,resultC=1,此后 resultB 取下一个值 3
例如 7 就是 resultC=1 的结果,此时 resultA、resultB 都等于 3,此后 resultC 取下一个值 3
例如 15 就是 resultA=5 或者是 resultB=3 的结果,此时 resultC=7,此后 resultA 取下一个值 7 ,resultB 取下一个值 5