• 判断丑数与寻找丑数


    丑数,真丑!
    一个数的因子仅仅包括2,3,5的数称为丑数。
    public class uglyNumber {
    //判断一个数是否为丑数
    public boolean isUglyNumber(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;
    }
    //寻找第N个丑数
    //从前往后查找,需要使用前面的元素确定放后面的元素。
    //设置三个指针,分别指向对应索引的位置,取大于元素最小的那一个,作为下一个丑数。
    public int FindUglyNumber(int index){
    int uglyNumber[] = new int[index];
    uglyNumber[0] = 1;
    int uglyIndex = 1;
    int p2 = 0;
    int p3 = 0;
    int p5 = 0;
    while (uglyIndex<index){
    //新的最小值为,原来p2,p3,p5,对应位置乘2,3,5得到。
    //之后赋值给那个位置。
    //之后寻找下一个位置的三个指针。
    int min = min(uglyNumber[p2]*2,uglyNumber[p3]*3,uglyNumber[p5]*5);
    uglyNumber[uglyIndex] = min;
    while (uglyNumber[p2]*2<=uglyNumber[uglyIndex]){
    p2++;
    }
    while (uglyNumber[p3]*3<=uglyNumber[uglyIndex]){
    p3++;
    }
    while (uglyNumber[p5]*5<=uglyNumber[uglyIndex]){
    p5++;
    }
    uglyIndex++;
    }
    return uglyNumber[index-1];
    }
    //选择a,b,c中最小的一个
    public int min(int a,int b,int c){
    if(a<b&&a<c) {
    return a;
    }
    if(b<a&&b<c){
    return b;
    }
    return c;
    }

    }
    总结:1,首先要理解丑数的概念。
    2,查找第N个丑数时,会开辟N个空间,但是这样做能够省时间。
  • 相关阅读:
    HTML静态网页 标签、表格
    SQL server 视图、范式
    SQL server 触发器
    SQL server while语句、存储过程
    SQL server 子查询、设置主键外键、变量及变量查询
    Excel单元格内容拆分、合并
    Excel日期格式调整
    Excel单元格内容批量加前缀
    Microsoft SQL Server, 错误:4064的解决方法 (转载)
    .net调用web邮箱发送邮件(转载)
  • 原文地址:https://www.cnblogs.com/liuwentao/p/9369670.html
Copyright © 2020-2023  润新知