剑指Offer:面试题34——丑数(java实现)
2016-07-09 10:13
676 查看
问题描述:
把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。
思路1:(显然是比较耗时的)
直接去判断每个整数是不是丑数,然后找到第N个小的数。(牛客网提交超时)
思路2:
上面想法在非丑数上也花费时间去判断它,如何避免这种情况呢?即我们只考虑丑数而不考虑非丑数。
把只包含因子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:
上面想法在非丑数上也花费时间去判断它,如何避免这种情况呢?即我们只考虑丑数而不考虑非丑数。
相关文章推荐
- 面试冒泡排序
- 剑指Offer:面试题33——把数组排成最小的数(java实现)(未完待续)
- 【雷军】给程序员的五点建议--如何成为编程高手并以此创业
- Git入门(四)——没有版本控制意识的程序员不是一个好的程序员
- Git入门(三)——没有版本控制意识的程序员不是一个好的程序员
- Java线程面试题 Top 50
- 剑指offer之面试题17 :合并两个排序的链表
- js基础篇string&&array(应YX同学面试复习要求 - -)
- 黑马程序员_Java基础_我的Day11学习笔记
- 各类程序员学习路线图
- JAVA实现链表面试题
- 程序员们的时间管理法则
- 一个平庸程序员自白:我不牛逼但那又怎样?
- 程序员学习能力提升三要素
- 第139课: Spark面试经典系列之数据倾斜解决之对于两个RDD数据量都很大且倾斜的Key特别多如何解决?
- 剑指offer之面试题16 :反转链表
- 程序员与禅的对话录
- 剑指offer——面试题4:替换空格
- Java线程经典面试题
- 剑指offer之面试题15 :链表中倒数第k个结点