Ugly Number(丑数)系列题 Python解法
2016-05-08 14:27
666 查看
Leetcode 263. Ugly Number
class Solution(object):
def isUgly(self, num):
"""
:type num: int
:rtype: bool
"""
if num <= 0:
return False
for i in [2,3,5]:
while num % i == 0:
num = num / i
if num == 1:
return True
else:
return False
Leetcode 264. Ugly Number II
class Solution(object):
def nthUglyNumber(self, n):
"""
:type n: int
:rtype: int
"""
if n <= 0:
return 0
if n == 1:
return 1
numbers = [1]
i2, i3, i5 = 0, 0, 0
for k in range(n-1):
n2, n3, n5 = numbers[i2] * 2, numbers[i3] * 3, numbers[i5] * 5
Min = min(n2, n3, n5)
numbers.append(Min)
i2 += (Min == n2)
i3 += (Min == n3)
i5 += (Min == n5)
return Min
Leetcode 313. Super Ugly Number
class Solution(object):
def nthSuperUglyNumber(self, n, primes):
"""
:type n: int
:type primes: List[int]
:rtype: int
"""
if n <= 0 or not primes:
return 0
if n == 1:
return 1
numbers = [1]
k = len(primes)
index = [0] * k
m = [0] * k
for nn in range(n-1):
for kk in range(k):
m[kk] = numbers[index[kk]] * primes[kk]
Min = min(m)
numbers.append(Min)
for kk in range(k):
index[kk] += (m[kk] == Min)
return Min
class Solution(object):
def isUgly(self, num):
"""
:type num: int
:rtype: bool
"""
if num <= 0:
return False
for i in [2,3,5]:
while num % i == 0:
num = num / i
if num == 1:
return True
else:
return False
Leetcode 264. Ugly Number II
class Solution(object):
def nthUglyNumber(self, n):
"""
:type n: int
:rtype: int
"""
if n <= 0:
return 0
if n == 1:
return 1
numbers = [1]
i2, i3, i5 = 0, 0, 0
for k in range(n-1):
n2, n3, n5 = numbers[i2] * 2, numbers[i3] * 3, numbers[i5] * 5
Min = min(n2, n3, n5)
numbers.append(Min)
i2 += (Min == n2)
i3 += (Min == n3)
i5 += (Min == n5)
return Min
Leetcode 313. Super Ugly Number
class Solution(object):
def nthSuperUglyNumber(self, n, primes):
"""
:type n: int
:type primes: List[int]
:rtype: int
"""
if n <= 0 or not primes:
return 0
if n == 1:
return 1
numbers = [1]
k = len(primes)
index = [0] * k
m = [0] * k
for nn in range(n-1):
for kk in range(k):
m[kk] = numbers[index[kk]] * primes[kk]
Min = min(m)
numbers.append(Min)
for kk in range(k):
index[kk] += (m[kk] == Min)
return Min
相关文章推荐
- Python 迭代工具
- 写个python脚本,处理bitmap.fnt文件,将信息存放入.csv文件中
- 参考视频教学写的一个文件处理分割的脚本
- Python basic interview questions
- 简述Python中"_"的使用常识
- Python学习笔记:元组(tuple)有关内容
- Python 递归
- Python函数式编程
- 利用python yielding创建协程将异步编程同步化
- 关于Python编码问题的一些看法
- python 字典转对象
- Python语言串口的操作
- Python yield 使用浅析
- Python实例---接入笑话API+发送邮件+云主机crontab定期执行
- python(3)if中字符串的判断问题
- wxpython SizerItem的大小控制
- python re.compile(?P<name>)
- python的 os 和 shutil 模块
- ubuntu14下python导入第三方so文件的路径问题
- Vim for Python & Normal Plugins & Vundle