View Ugly Number on LeetCode
Statistics
Time Complexity
O(log n) - The maximum number of divisions is log base [2,3, or 5] of n, resulting in the O(log n) time complexity.
Space Complexity
O(1) - The number of variables created is independent of n, resulting in the O(1) space complexity.
Runtime Beats
100% of other submissions
Memory Beats
100% of other sumbissions
Explanation
We must eliminate all the inputs that violate the solution space to avoid incorrect results. All values less than one must return False according to the problem, so we execute if n < 1: return False to eliminate these inputs and return the correct answer.
After this, we enter a for loop and perform repetitive division (inside of the while loop) on the input number n until the current prime number is no longer a factor of n.
Once we exit the for loop, we return n==1.
- If
False, then the prime numbers were not factors ofn. - If
True, then one or more prime numbers were factors ofn, leavingnequaling one.
Solution
1
2
3
4
5
6
7
8
9
class Solution:
def isUgly(self, n: int) -> bool:
if n < 1: return False
for div in [2, 3, 5]:
while n%div == 0:
n = n//div
return n==1