263. Ugly Number
判断一个数是不是因数只有2,3,5。很简单的啦~
代码如下:
class Solution(object):
def isUgly(self, num):
"""
:type num: int
:rtype: bool
"""
if num <= 0:
return False
while num % 2 == 0:
num /= 2
while num % 3 == 0:
num /= 3
while num % 5 == 0:
num /= 5
return num == 1
264. Ugly Number II
下一个数字必然是之前的某个数字乘2、乘3、乘5得到的。
用index2,index3,index5分别记录乘2、乘3、乘5后能大于最后一个数的最小数的位置。
时间复杂度O(n)
class Solution(object):
def nthUglyNumber(self, n):
"""
:type n: int
:rtype: int
"""
myList = [1]
index2 = index3 = index5 = 0
while n - 1 > 0:
n -= 1
temp = min(myList[index2] * 2, myList[index3] * 3, myList[index5] * 5)
myList.append(temp)
if temp == myList[index2] * 2:
index2 += 1
if temp == myList[index3] * 3:
index3 += 1
if temp == myList[index5] * 5:
index5 += 1
return myList[-1]