zoukankan      html  css  js  c++  java
  • 丑数

    题目:我们把只包含因子2、3和5的数称作丑数(Ugly Number)。求按从小到大的顺序的第1500个丑数。例如6、8都是丑数,但14不是,因为它不包含因子7。习惯上我们把1当作第一个丑数。

    第一种方法:逐个判断每个整数是不是丑数的解法,直观但不够高效。

    第二种方法:创建数组保存已经找到的丑数,用空间换时间的解法。

    另外一种解法:参考剑指offer。

    public class Ugly{
        public int getUgly(int index){
            if(index <= 0) return 0;
            int[] uglyNumbers = new int[index];
            uglyNumbers[0] = 1;
            int nextUglyIndex = 1;
            int multiply2 = 1;
            int multiply3 = 1;
            int multiply5 = 1;
            while(nextUglyIndex < index){
                int min = Min(multiply2*2,multiply3*3,multiply5*5);
                uglyNumbers[nextUglyIndex] = min;
                while(multiply2*2 <= uglyNumbers[nextUglyIndex]){
                    ++multiply2;
                }
                while(multiply3*3 <= uglyNumbers[nextUglyIndex]){
                    ++multiply3;
                }
                while(multiply5*5 <= uglyNumbers[nextUglyIndex]){
                    ++multiply5;
                }
                ++nextUglyIndex;
            }
            int ugly = uglyNumbers[nextUglyIndex-1];
            return ugly;
        }
        public int Min(int number1,int number2,int number3){
            int min = (number1<number2)?number1:number2;
            min = (min<number3)?min:number3;
            return min;
        }
        public static void main(String[] args){
            Ugly u = new Ugly();
            int result = u.getUgly(1500);
            System.out.println(result);
        }
    }
    
  • 相关阅读:
    python常用函数年初大总结
    Linux系统巡检常用命令
    码率
    视频码率计算问题
    Python快速教程
    MFC消息机制
    MySQL多表查询
    VoIP的话音质量测量方法
    用Py2exe打包Python脚本简单介绍
    在Eclipse中执行Andorid test preject提示The connection to adb is down, and a severe error has occured.解决方法
  • 原文地址:https://www.cnblogs.com/yingpu/p/9252359.html
Copyright © 2011-2022 走看看