目录
-
丑数(剑指欧肥儿)
题目描述:把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。
解题代码一(效率不高但容易想到):
class Solution {
public:
int GetUglyNumber_Solution(int index) {
//排除不可能
if(index <= 0)
return 0;
int num = 0;
int count = 0;
while(count < index){
++num;
if(IsUgly(num))
++count;
}
return num;
}
private:
bool IsUgly(int num){
while(num % 2 == 0)
num /= 2;
while(num % 3 == 0)
num /= 3;
while(num % 5 == 0)
num /= 5;
return (num == 1) ? true : false;
}
};
解题思路:
- 这个代码,逻辑上没有任何问题,但是如果笔试或者面试拿出来,那就只有GG的份。因为这个算法的时间效率不高,一个数字即使不是丑