• 剑指Offer:面试题34——丑数(java实现)


    问题描述:

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

    思路1:(显然是比较耗时的)

    直接去判断每个整数是不是丑数,然后找到第N个小的数。(牛客网提交超时)

    public int GetUglyNumber_Solution(int index) {
    
            if(index <= 0){
                return 0;
            }
    
            int number = 0;
            int found = 0;
            while(found < index){
                number++;
    
                if(is_UglyNumber(number)){
                    found++;
                }
    
            }
            return number;
        }
    
        boolean is_UglyNumber(int n){
    
            while(n % 2 == 0){
                n /= 2;
            }
    
            while(n % 3 == 0){
                n /= 3;
            }
    
            while(n % 5 == 0){
                n /= 5;
            }
    
            return (n == 1) ? true : false;
        }

    思路2:

    上面想法在非丑数上也花费时间去判断它,如何避免这种情况呢?即我们只考虑丑数而不考虑非丑数。

  • 相关阅读:
    PyQt4 调用串口API pySerial API说明
    树的计算
    数据结构单链表实现
    虚函数和抽象函数
    静态内存和堆栈
    二叉树学习图片---郝斌
    汉诺塔
    循环队列的实现
    队列的实现
    栈的应用
  • 原文地址:https://www.cnblogs.com/wenbaoli/p/5655698.html
Copyright © 2020-2023  润新知