题解 | #数字在升序数组中出现的次数#

丑数

http://www.nowcoder.com/practice/6aa9e04fc3794f68acf8778237ba065b

思路:p2、p3、p5分别记录基于2、3、5生成丑数的位置

注意:注意指针移动

class Solution:
    def GetUglyNumber_Solution(self , index: int) -> int:
        # write code here
        
        if index == 0:
            return 0
        
        dp = [0] * (index)
        dp[0] = 1
        p2, p3, p5 = 0, 0, 0 # 乘以2、3、5当前可生成最小丑数的位置
        
        for i in range(1, index):
            dp[i] = min(dp[p2]*2, min(dp[p3]*3, dp[p5]*5))
            
            if dp[p2] * 2 == dp[i]: # 当前由基于2生成最小丑数,p2移动
                p2 += 1
            
            if dp[p3] * 3 == dp[i]:
                p3 += 1
                
            if dp[p5] * 5 == dp[i]:
                p5 += 1
        return dp[index-1]
                
            
全部评论

相关推荐

点赞 评论 收藏
分享
鬼迹人途:你去投一投尚游游戏,服务器一面,第一个图算法,做完了给你一个策略题,你给出方案他就提出低概率问题,答不上当场给你挂
点赞 评论 收藏
分享
龙珠传说:nb,公务员解约不需要支付违约金吧
点赞 评论 收藏
分享
把实习生当正职使昨天第一天就加班,晚上连口饭都没吃上,以后日子咋过,我不想干了
码农索隆:实习不怕忙,就怕干的活重复且没难度,要干就干那种有深度有难度的任务,这样才能快速的提升
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务