本文主要是介绍牛客网 丑数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目:
把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。
解答:
最直接的想法是从小到大依次判断每个数是否是丑数,直至找到第n个丑数,但是提交时显示运行超时:您的程序未能在规定时间内运行结束,请检查是否循环有错或算法复杂度过大。
参考别人的解法:丑数
# -*- coding:utf-8 -*-
class Solution:def GetUglyNumber_Solution(self, index):# write code hereif (index <= 0):return 0uglyList = [1]indexTwo = 0indexThree = 0indexFive = 0for i in range(index-1):newUgly = min(uglyList[indexTwo]*2, uglyList[indexThree]*3, uglyList[indexFive]*5)uglyList.append(newUgly)if (newUgly % 2 == 0):indexTwo += 1if (newUgly % 3 == 0):indexThree += 1if (newUgly % 5 == 0):indexFive += 1return uglyList[-1]
这篇关于牛客网 丑数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!