【面试题034】丑数
题目:
我们把只包含因子2、3和5的数称为丑数(Ugly
Number)。
求按从小到大的顺序的第1500个丑数。
例如6、8都是丑数,但14不是,因为他包含因子7。习惯上我们把1当做第一个丑数。
思路一:
逐个的判断,效率不高。
1 |
#include <iostream> |
思路二:
创建数组保存已经找到的丑数,用空间换时间的解法。
尝试找一种只计算丑数的方法,而不是在非丑数的整数上花时间,
——根据定义丑数应该是另一个丑数乘以2、3或者5的结果,当然初始化的时候只有1,
1*2 1*3 1*5
2*2 3*2 5*2
2*3 3*3 5*3
2*5 3*5 5*5……
都分别乘以2、3、5事实上这不是必须的,请看以下代码中
——三个int指针的应用:
1 |
#include <iostream> |
【面试题034】丑数