题目:
来源:
法一:自己的超时代码
思路:从2开始由小到大遍历判断每一个数是否为丑数,由于到后面丑数越来越稀疏,导致非常费时间.
class Solution: def nthUglyNumber(self, n: int) -> int: if n == 1: return 1 ans = [1] k = 2 while len(ans) < n: for j in [2,3,5]: # 如果除以2 3 5中的某个数可以除尽,则判断商是否在之前的数中 # 如果在说明是丑数,否则不是 if k % j == 0: if int(k/j) in ans: ans.append(k) break k += 1 return ans[-1]
法二:别人代码 利用三指针
原文地址:https://www.cnblogs.com/xxswkl/p/12245095.html
时间: 2024-10-04 09:18:11