丑数

丑数的定义

把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。

# -*- coding:utf-8 -*-
class Solution:
def GetUglyNumber_Solution(self, index):
#去掉索引为负数的情况,否则牛客网编辑器会报超过内存限制
if index <= 0:
return 0
# 然后判断要找的丑数 是不是第一个,如果是第一个,那么就返回1.
if index == 1:
return 1
count = 1
twopointer = 0
threepointer = 0
fivepointer = 0
uglylist = [1]
while count != index:
minvalue = min(2 * uglylist[twopointer], 3 * uglylist[threepointer], 5 * uglylist[fivepointer])
uglylist.append(minvalue)
# print uglylist
count += 1
if minvalue == 2 * uglylist[twopointer]:
twopointer += 1
if minvalue == 3 * uglylist[threepointer]:
threepointer += 1
if minvalue == 5 * uglylist[fivepointer]:
fivepointer += 1
return uglylist[index-1]

【剑指offer】丑数_最小值思路:丑数定义,3个指针,一开始都指定向1,如果找到12,13,1*5 的最小值,是2,所以2的指针往前移动一格,以此类推