连续子序列优化问题 DP通解

第一题:https://leetcode.com/problems/maximum-subarray/
Input: [-2,1,-3,4,-1,2,1,-5,4],
Output: 6
Explanation: [4,-1,2,1] has the largest sum = 6.
思路:动态规划
子问题定义为 F(A, i) 表示为A[0:i](前闭后闭)中包含A[i]的最优解
最终问题(A[0:N]中的最优解)的解是子问题解中的最大值

def maxSubArray(self, nums):
        res = maxEndingHere = nums[0]
        for i in range(1, len(nums)):
            maxEndingHere = max(maxEndingHere + nums[i], nums[i]) # maxEnd 定义为包含当前元素的最优解
            res = max(res, maxEndingHere)
        return res

实际上上述解法是连续子序列优化问题的通解
拓展一下
abcefghkk --> efgh
求字符串的最长连续子序列
思路:
遍历
第一步:找到包含当前节点的局部最优解 maxEndHere
第二步:刷新全局最优解 res

def maxLenStr(self, s):
        if not s: return ''
        res = maxEndHere = s[0]
        for i in range(1, len(s)):
            maxEndHere = (maxEndHere if ord(maxEndHere[-1]) + 1 == ord(s[i]) else '') + s[i] # 这里的括号必不可少
            res = maxEndHere if len(maxEndHere) > len(res) else res
        return res
全部评论

相关推荐

感觉他们一点都不了解现在这个社会就业有多难,已经在牛客刷到好多篇 延毕的帖子了,延毕就会导致已经找好的工作就没了,还得重新再找,学校和老师们是怎么想的呢????看到学生丢失工作会开心吗 就业数据都在造假,真实的就业困难不去解决 一个个真是好样的
从明天开始狠狠卷JV...:学生看到的是导师不放实习导致offer黄了。 导师看到的是招进来的学生吃自己补助和自己的招生名额,却没给自己升迁带来任何帮助,还要跑路。 根本利益的不一致,最主要留校的导师大概率是职场上招聘失败的,被迫留校的,什么牛鬼蛇神都会有
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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