【发布时间】:2011-11-05 03:08:34
【问题描述】:
在表达式中
2x * 3y * 5z
x、y 和 z 可以取非负整数值 (>=0)。
所以函数会生成一系列数字1,2,3,4,5,6,8,9,10,12,15,16....
- 我有一个蛮力解决方案。
- 我基本上会在从 1 开始的循环中进行迭代,并且在每次迭代中我会发现当前的数字因子是否仅来自 2,3 或 5 的集合。
我想要的是一个优雅的算法。
这是一道面试题。
【问题讨论】:
-
你能用更清晰的语法重写表达式吗,也许用一些 elements ?
-
嗯,我很确定我在 SO 上看到了类似的问题,只处理 2^x * 5^y。但是我现在找不到了。我认为那也是一个面试问题。
-
优先解决方案很好,但我认为应该接受 O(n) 解决方案之一。
标签: java algorithm hamming-numbers