codewars--js--Hamming Numbers
2024-10-08 06:01:32
问题描述:
A Hamming number is a positive integer of the form 2i3j5k, for some non-negative integers i, j, and k.
Write a function that computes the nth smallest Hamming number.
Specifically:
- The first smallest Hamming number is 1 = 203050
- The second smallest Hamming number is 2 = 213050
- The third smallest Hamming number is 3 = 203150
- The fourth smallest Hamming number is 4 = 223050
- The fifth smallest Hamming number is 5 = 203051
The 20 smallest Hamming numbers are given in example test fixture.
Your code should be able to compute all of the smallest 5,000 (Clojure: 2000) Hamming numbers without timing out.
我的思路:
本题自己是没有任何思路的,只是知道汉明数肯定是2或3或5的倍数,但是无从下手。后来看别人的答案,主要思路也是如此。
下一个汉明数为已存在汉明数的2x,3x,5x的倍数。
若i2是我们没有用过的汉明数的指数的话,就乘以2;
若i3是我们没有用过的汉明数的指数的话,就乘以3;
若i5是我们没有用过的汉明数的指数的话,就乘以5。
我的答案:无,o(╥﹏╥)o
优秀答案:
(1)
function hamming (n) {
var seq = [1];
var i2 = 0, i3 = 0, i5 = 0;
for (var i = 1; i < n; i++) {
var x = Math.min(2 * seq[i2], 3 * seq[i3], 5 * seq[i5]);
seq.push(x);
if (2 * seq[i2] <= x) i2++; //<= 可换成 ==
if (3 * seq[i3] <= x) i3++;
if (5 * seq[i5] <= x) i5++;
}
return seq[n-1];
}
哈哈哈!
最新文章
- Axure 资料搜集
- Web学习之html
- Activity的四种launchMode
- firefox, chrome常见插件
- bootstrap multiselect两大组件
- java.lang.IllegalStateException: No data type for node: org.hibernate.hql.ast.tree.MethodNode(尼玛,蛋疼的错误)
- HDU 3255 Farming
- 1034. Head of a Gang
- flask 分页
- <;花荣《至尊狐狸》中国股市精英最优套利战术>;读书笔记
- JS多重判断 / ES6 includes
- jquery radio的操作
- oracle的常用函数 instr() 和substr()函数
- linux配置免密登录
- wifidog 移植到MIPS平台
- Linux 用C语言实现简单的shell(2)
- mORMot使用synDBDataSet时字段类型不正确引起的问题
- google,百度地图POI下载
- xml的servlet配置
- java的小知识点