题解 | #丑数#
丑数
https://www.nowcoder.com/practice/6aa9e04fc3794f68acf8778237ba065b
# # 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 # # # @param index int整型 # @return int整型 #思想2**x 3**y 5**z class Solution: def GetUglyNumber_Solution(self , index: int) -> int: # write code here if index == 0: return 0 res = [1] # 目标数组 a,b,c = 0,0,0 # 初始情况下三指针都指向第一个;a指针专注*2,b专注*3,c专注*5 while len(res) < index: # 当数组没到达n长度时 cur = min(res[a]*2, res[b]*3, res[c]*5) # 当前取三个指针所能生成的最小值 if cur not in res: #【注】另法,就是不管生成重复与否,都把它放进数组,最后返回数组最后一位即可 res.append(cur) # 如果没有生成过这个数,放进去;比如6=2*3=3*2这就重复了 if cur == res[a]*2: # 如果是*2生成的这个数,那么a指针向后移动一位 a += 1 elif cur == res[b]*3:# b,c同理 b += 1 else: c += 1 return res[index-1] # 对应位置上就是第几位的丑数