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
, leavingn
equaling 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