美文网首页常用算法
2019-08-04-算法-丑数

2019-08-04-算法-丑数

作者: 王元 | 来源:发表于2019-08-04 22:27 被阅读0次

定义:我们把只包含因子2、3和5的数称作丑数(Ugly Number)。

求按从小到大的顺序的第1500个丑数。例如6、8都是丑数,但14不是,因为它包含因子7。习惯上我们把1当做第一个丑数。

1,一遍遍历法-效率比较低

  • 如果一个数能够被2整除,那么让他继续除以2;

  • 如果一个数能够被3整除,那么让他继续除以3;

  • 如果一个数能够被5整除,那么让他继续除以5;

  • 如果最后这个数变为1,那么这个数就是丑数,否则不是。

--

public static int getUglyNumber(int index) {
    int number = 0;
    for (int i = 0; i < index; i++) {
        if(isUgly(i)) {
            number = i;
            break;
        }
    }
    return number;
}

public static boolean isUgly(int number) {
    while (number % 2 == 0) {
        number = number / 2;
    }
    while (number % 3 == 0) {
        number = number / 3;
    }
    while (number % 5 == 0) {
        number = number / 5;
    }
    return number == 1;
}

2,空间换时间法:时间效率较高

  • 根据丑数的定义,我们可以知道丑数可以由另外一个丑数乘以2,3或者5得到。
  • 因此我们可以创建一个数组,里面的数字是排好序的丑数,每一个丑数都是前面的丑数乘以2,3或者5得到的。

相关文章

  • 2019-08-04-算法-丑数

    定义:我们把只包含因子2、3和5的数称作丑数(Ugly Number)。 求按从小到大的顺序的第1500个丑数。例...

  • 2019-08-04-算法回文数

    定义:回文数 正序和倒序读都是一样的

  • 寻找丑数

    算法题:寻找丑数 这是一道在订阅的blog上看到的题目,觉得比较有意思,就动手做了一下。 何为丑数? 丑数(Ugl...

  • 每日算法之丑数

    描述 设计一个算法,找出只含素因子2,3,5 的第 n 小的数。(我们可以认为1也是一个丑数) 符合条件的数如:1...

  • 丑数II

    题目描述 设计一个算法,找出只含素因子2,3,5 的第 n 大的数。1也是一个丑数。 思路 方法一每个丑数都是2....

  • lintcode 丑数

    设计一个算法,找出只含素因子2,3,5 的第 n 大的数。直接寻找丑数,由定义可知,丑数是由2m,3n,5^l,因...

  • LeetCode刷题-丑数

    前言说明 算法学习,日常刷题记录。 题目连接 丑数[https://leetcode-cn.com/problem...

  • 264、丑数 II | 算法(leetcode,附思维导图 +

    零 标题:算法(leetcode,附思维导图 + 全部解法)300题之(264)丑数 II 一 题目描述 二 解法...

  • 2019-08-04-数组算法

    找出数组中重复的数字 1,题目:长度为n+1的数组中保存这1-n的数字,找出其中任意一个重复的数字,并输出 空间换...

  • 丑数

    丑数 设计一个算法,找出只含素因子2,3,5的第n小的数。 符合条件的数如:1, 2, 3, 4, 5, 6, 8...

网友评论

    本文标题:2019-08-04-算法-丑数

    本文链接:https://www.haomeiwen.com/subject/ivjudctx.html