蚂蚁3.28算法笔试第三题

题目描述:
数组染色
数组相邻的三个元素不能同时染色,也不能一个也不染色。
求染色元素的最大和

dp[i][0]  定义为位置i不染色,i - 1也不染色
dp[i][1]= 定义为位置i不染色,i - 1染色
dp[i][2] = 定义为位置i染色,i - 1不染色
dp[i][3] = 定义为位置i染色,i - 1也染色

def dp_color(nums):
    n = len(nums)
    dp = [[0, 0, 0, 0] for _ in range(n)]
    dp[0][2] = nums[0]
    dp[0][3] = nums[0]

    dp[1][1] = nums[0]
    dp[1][2] = nums[1]
    dp[1][3] = nums[0] + nums[1]

    for i in range(2, n):
        dp[i][0] = dp[i - 1][1]
        dp[i][1] = max(dp[i - 1][2], dp[i - 1][3])
        dp[i][2] = nums[i] + max(dp[i - 1][0], dp[i - 1][1])
        dp[i][3] = nums[i] + dp[i - 1][2]
    return max(dp[n - 1])
全部评论
点赞 回复 分享
发布于 2023-03-29 13:42 江苏
太强了
点赞 回复 分享
发布于 2023-03-28 21:22 广东
m
点赞 回复 分享
发布于 2023-03-28 21:14 北京
m
点赞 回复 分享
发布于 2023-03-28 21:13 广东

相关推荐

都在说秋招是越早投越好,我越早投和双9大佬同台竞技,我压力暴大呀营销号都说越早投递越好真的不是贩卖焦虑吗
xxxxOxo:分批次投吧,投太多面试安排不过来或者一直面都没时间复盘,那很多面试等于白面了
点赞 评论 收藏
分享
程序员牛肉:1.大头肯定是院校问题,这个没啥说的。 2.虽然有实习,但是实习的内容太水了,在公司待了七个月的时间,看起来就只做了jwt和接入redis。爬取新闻,数据导入。这几个需求值得你做七个月吗?这不就是三四个月的工作量吗?我要是面试官的话真心会认为你能力不太行。所以既然有实习了,一定要好好写,像是Swagger这种东西是真没必要写上去,就拉一个包的事情。 3.我个人觉得话,在校生不要把自己当社招看,除非你的项目是特别牛逼,特别有名的含金量,否则不要写这种密密麻麻的一串子工作职责。你的项目只有一个作用,就是供面试官从中来抽取八股对你进行拷打。 但是你现在这个看不来什么技术点,可以改一下,详细表述一下你用什么技术实现了什么功能,在实现这个功能的过程中,你解决了什么难题。
点赞 评论 收藏
分享
驼瑞驰_招募评论官版...:一共经历几次握手?
点赞 评论 收藏
分享
评论
2
14
分享

创作者周榜

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