前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >算法-丑数(中等)

算法-丑数(中等)

作者头像
OBKoro1
发布2020-10-27 11:59:14
3290
发布2020-10-27 11:59:14
举报
文章被收录于专栏:OBKoro1的前端分享

丑数

难度:中等

描述:

设计一个算法,找出只含素因子 2,3,5 的第 n 小的数。

符合条件的数如:1, 2, 3, 4, 5, 6, 8, 9, 10, 12…

样例:

如果 n = 9, 返回 10

思路分析:

这类题目就是找规律,找到规律就好写了。

我再提供多一些数据:[1, 2, 3, 4, 5, 6, 8, 9, 10, 12, 15, 16, 18, 20, 24]

代码模板:

代码语言:javascript
复制
/**
 * @param n: An integer
 * @return: the nth prime number as description.
 */
const nthUglyNumber = function(n) {
  // write your code here
};

想一想再看答案

想一想再看答案

想一想再看答案

代码:

代码语言:javascript
复制
// [1, 2, 3, 4, 5, 6, 8, 9, 10, 12, 15, 16, 18, 20, 24]
const nthUglyNumber = function(n) {
  let arr = [1];
  let min,
    nex2,
    nex3,
    nex5,
    i2 = i3 = i5 = 0;
  for (let i = 1; i < n; i++) {
    // 除了第一个数,每个数都是2、3、5的倍数,把它们的倍数找出来,数字较小添加进去
    nex2 = arr[i2] * 2;
    nex3 = arr[i3] * 3;
    nex5 = arr[i5] * 5;
    min = Math.min(nex2, nex3, nex5);
    // 增加他们的倍数 为下次计算做准备
    if (min === nex2) i2++;
    if (min == nex3) i3++;
    if (min == nex5) i5++;
    arr.push(min);
  }
  return arr[arr.length - 1];
  // return arr
};
console.log('输出', nthUglyNumber(9), nthUglyNumber(15));

鼓励我一下:

觉得还不错的话,给我的项目点个star吧

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-11-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 OBKoro1前端进阶积累 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 丑数
    • 难度:中等
      • 描述:
        • 样例:
          • 思路分析:
            • 代码模板:
              • 想一想再看答案
                • 想一想再看答案
                  • 想一想再看答案
                    • 代码:
                      • 鼓励我一下:
                      领券
                      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档