问题描述:

Hamming number is a positive integer of the form 2i3j5k, for some non-negative integers ij, 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];
}

哈哈哈!

最新文章

  1. Axure 资料搜集
  2. Web学习之html
  3. Activity的四种launchMode
  4. firefox, chrome常见插件
  5. bootstrap multiselect两大组件
  6. java.lang.IllegalStateException: No data type for node: org.hibernate.hql.ast.tree.MethodNode(尼玛,蛋疼的错误)
  7. HDU 3255 Farming
  8. 1034. Head of a Gang
  9. flask 分页
  10. &lt;花荣《至尊狐狸》中国股市精英最优套利战术&gt;读书笔记
  11. JS多重判断 / ES6 includes
  12. jquery radio的操作
  13. oracle的常用函数 instr() 和substr()函数
  14. linux配置免密登录
  15. wifidog 移植到MIPS平台
  16. Linux 用C语言实现简单的shell(2)
  17. mORMot使用synDBDataSet时字段类型不正确引起的问题
  18. google,百度地图POI下载
  19. xml的servlet配置
  20. java的小知识点

热门文章

  1. restframewor 版本(version)
  2. python 继承机制
  3. 用 F# 手写 TypeScript 转 C# 类型绑定生成器
  4. AMD R5 2400G插帧教程
  5. OpenCV2.4.13+Qt5.6.2配置方法
  6. LeetCode题目总结-滑窗法
  7. 最短路径-Dijkstra+Floyd+Spfa
  8. 关于基本布局之——Grid布局
  9. alert弹出窗口,点击确认后关闭页面
  10. SpringMVC 上传文件 MultipartFile 转为 File