您的位置:首页 > 其它

[leetcode 263 264]Ugly Number I II

2015-08-31 11:19 387 查看
Write a program to check whether a given number is an ugly number.

Ugly numbers are positive numbers whose prime factors only include
2, 3, 5
.
For example,
6, 8
are ugly while
14
is
not ugly since it includes another prime factor
7
.

Note that
1
is typically treated as an ugly number.

Credits:

Special thanks to @jianchao.li.fighter for adding this problem and creating all test
cases.

AC代码:

class Solution {
public:
bool isUgly(int num) {
if(num==0)
return false;
while(num!=1)
{
if(num%2==0)
num=num/2;
else if(num%3==0)
num=num/3;
else if(num%5==0)
num=num/5;
else
break;
}
return num==1;
}
};


Write a program to find the
n
-th ugly number.

Ugly numbers are positive numbers whose prime factors only include
2, 3, 5
.
For example,
1, 2, 3, 4, 5, 6, 8, 9, 10, 12
is the sequence of the first
10
ugly
numbers.

Note that
1
is typically treated as an ugly number.
当然是用I中的判断函数一个数字一个数字的判断也是可以的,但是时间效率就不高了
AC代码:

class Solution
{
public:

int minNum(int x,int y)
{
return x<y?x:y;
}

int nthUglyNumber(int n)
{
if(n==0)
return 0;
int *count=new int
;
count[0]=1;
int two=0;
int three=0;
int five=0;
int sum=1;
int min=0;
while(sum<n)
{
min=minNum(minNum(count[two]*2,count[three]*3),count[five]*5);
if(min>count[sum-1])
{
count[sum]=min;
++sum;
}
if(min==count[two]*2)
++two;
else if(min==count[three]*3)
++three;
else
++five;
}
return count[sum-1];
}
};


其他Leetcode题目AC代码:https://github.com/PoughER/leetcode
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: