263.Ugly Number
An ugly number is a positive integer whose prime factors are limited to 2
, 3
, and 5
.
Given an integer n
, return true
if n
is an ugly number.
Example 1:
1 2 3
| Input: n = 6 Output: true Explanation: 6 = 2 × 3
|
Example 2:
1 2 3
| Input: n = 1 Output: true Explanation: 1 has no prime factors, therefore all of its prime factors are limited to 2, 3, and 5.
|
Example 3:
1 2 3
| Input: n = 14 Output: false Explanation: 14 is not ugly since it includes the prime factor 7.
|
个人解答:
时间复杂度:O(logn)
空间复杂度:O(1)
1 2 3 4 5 6 7 8 9 10 11 12 13
| class Solution { public: bool isUgly(int n) { if(n <= 0)return false; while(n != 1) { if(n%2 == 0)n /= 2; else if(n%3 == 0)n /= 3; else if(n%5 == 0)n /= 5; else return false; } return true; } };
|
优化:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| class Solution { public: bool isUgly(int n) { if (n <= 0) { return false; } vector<int> factors = {2, 3, 5}; for (int factor : factors) { while (n % factor == 0) { n /= factor; } } return n == 1; } };
|