调试中...
调试中...
题目描述
题目描述
题解
题解
提交记录
提交记录
代码
代码
测试用例
测试用例
测试结果
测试结果
中等
相关标签
相关企业
提示

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

示例 1:

输入:k = 5
输出:9
通过次数
50.5K
提交次数
91.1K
通过率
55.5%


相关企业

提示 1
明确这个问题的要求。要求满足 3a× 5b× 7c 这一形式的第 k 小的值。

提示 2
蛮力解法得到的形如 3a× 5b × 7c 的第 k 小的值是什么样的?

提示 3
在寻找 3a × 5b × 7c 的第 k 个最小值时,我们知道 a、b、c 将小于等于 k。你能生成所有可能的数字吗?

提示 4
查看 3a×5b×7c 对应的所有值的列表,可以观察到列表中的每个值都是 3×(列表中前面的某值)、5×(列表中前面的某值)或 7×(列表中前面的某值)。

提示 5
由于每个数字都是列表中先前值的 3 倍、5 倍或 7 倍,因此我们可以检查所有可能的值,然后选择下一个还没有看到的值。这将导致许多重复的工作。如何才能避免这种情况呢?

提示 6
不要检查列表中的所有值来寻找下一个值(通过将每个值乘以 3、5、7),而是这样考虑:当你将一个值 x 插入列表时,可以“构造”3x、5x 和 7x 以供以后使用。

提示 7
当你将 x 添加到前 k 个值的列表中时,可以将 3x、5x 和 7x 添加到新的列表中。如何使其尽可能地优化?保留多个队列如何?总是需要插入 3x、5x 和 7x 吗? 或者,有时你只需要插入 7x?你需要避免相同的数字出现两次。

评论 (0)

《程序员面试金典(第 6 版)》独家授权
本书是原谷歌资深面试官的经验之作,帮助了许多想要加入脸书、苹果、谷歌等 IT 名企的求职者拿到 Dream offer。本专题的 100+ 编程面试题是在原书基础上精心挑选出来的,帮助你轻松应战 IT 名企技术面试。
© 2025 领扣网络(上海)有限公司
0 人在线
行 1,列 1
运行和提交代码需要登录
k =
1
Source