【学会动态规划】最大子数组和(19)

这篇具有很好参考价值的文章主要介绍了【学会动态规划】最大子数组和(19)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

动态规划怎么学?

1. 题目解析

2. 算法原理

1. 状态表示

2. 状态转移方程

3. 初始化

4. 填表顺序

5. 返回值

3. 代码编写

写在最后:


动态规划怎么学?

学习一个算法没有捷径,更何况是学习动态规划,

跟我一起刷动态规划算法题,一起学会动态规划!

1. 题目解析

题目链接:53. 最大子数组和 - 力扣(LeetCode)

【学会动态规划】最大子数组和(19),学会动态规划,动态规划,算法

题目很好理解,顾名思义,就是找最大的子数组和。

2. 算法原理

1. 状态表示

dp [ i ] 位置表示以 i 位置元素为结尾的所有子数组的最大和。

2. 状态转移方程

状态转移方程有两种情况,

1. 子数组长度为 1 时,最大和就是 i 位置的值

2. 子数组长度大于 1 是,最大和就是上一个位置的最大和 + 当前位置的值

所以我们就可以得出状态转移方程

dp [ i ] = max( nums[ i ],dp[ i ] + nums[ i ] )

3. 初始化

初始化就是防止越界,并且不影响后面的值,

初始化成 0 即可。

4. 填表顺序

从左往右即可。

5. 返回值

返回整个 dp 表里的最大值。

3. 代码编写

class Solution {
public:
    int maxSubArray(vector<int>& nums) {
        int n = nums.size();
        vector<int> dp(n + 1);
        int ans = INT_MIN;
        for(int i = 1; i <= n ; i++) {
            dp[i] = max(nums[i - 1], dp[i - 1] + nums[i - 1]);
            ans = max(ans, dp[i]);
        }
        return ans;
    }
};

写在最后:

以上就是本篇文章的内容了,感谢你的阅读。

如果感到有所收获的话可以给博主点一个哦。

如果文章内容有遗漏或者错误的地方欢迎私信博主或者在评论区指出~文章来源地址https://www.toymoban.com/news/detail-652610.html

到了这里,关于【学会动态规划】最大子数组和(19)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 算法 DAY52 动态规划10 1143.最长公共子序列 1035.不相交的线 53. 最大子数组和

    本题和动态规划:718. 最长重复子数组 (opens new window)区别在于这里不要求是连续的了 1、dp数组 dp[i][j]:长度为[0, i - 1]的字符串text1与长度为[0, j - 1]的字符串text2的最长公共子序列为dp[i][j] 2、递推公式 因为不强调是连续的,当前dp[i][j] 就有三种路径可以选:dp[i-1][j] dp[i][j-1]

    2024年02月03日
    浏览(65)
  • 【学会动态规划】礼物的最大价值(7)

    目录 动态规划怎么学? 1. 题目解析 2. 算法原理 1. 状态表示 2. 状态转移方程 3. 初始化 4. 填表顺序 5. 返回值 3. 代码编写 写在最后: 学习一个算法没有捷径,更何况是学习动态规划, 跟我一起刷动态规划算法题,一起学会动态规划! 题目链接:剑指 Offer 47. 礼物的最大价值

    2024年02月16日
    浏览(39)
  • 【学会动态规划】最长湍流子数组(23)

    目录 动态规划怎么学? 1. 题目解析 2. 算法原理 1. 状态表示 2. 状态转移方程 3. 初始化 4. 填表顺序 5. 返回值 3. 代码编写 写在最后: 学习一个算法没有捷径,更何况是学习动态规划, 跟我一起刷动态规划算法题,一起学会动态规划! 题目链接:978. 最长湍流子数组 - 力扣(

    2024年02月12日
    浏览(38)
  • 动态规划之连续乘积最大子数组 & 连续和最大子数组

    给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 子数组 是数组中的一个连续部分。 示例 1: 输入:nums = [-2,1,-3,4,-1,2,1,-5,4] 输出:6 解释:连续子数组 [4,-1,2,1] 的和最大,为 6 。 示例 2: 输入:nums = [1] 输出:

    2024年02月10日
    浏览(47)
  • 乘积最大子数组--动态规划

    乘积最大子数组 思路: 看到这个题的时候 要用DP的想法去做这道题 想到遍历到前面的值能不能为后面所用 假设有n个值 我们可以记录一下 第i个值的最大值是什么 怎么用到前面的值取判断 第i个值 可能正数 也可能是负数 如果是正数 那么我们乘以后面第i-1位的最大值 可以得

    2024年02月11日
    浏览(43)
  • 最大子数组和:动态规划

    Problem: 53. 最大子数组和 首先就是赋予dp[0]为nums[0],然后循环遍历数组判断dp[i-1]是否小于0,如果小于0那么dp[i]就是nums[i],负责dp[i]就是dp[i-1]+nums[i],这样就可以保证每个dp[i]都是目前序列的最大值,最后返回最大的dp[i]就好 描述你的解题方法 时间复杂度: 添加时间复杂度, 示例:

    2024年02月05日
    浏览(44)
  • 动态规划——最大子数组和

    最大子数组和 Time Limit:  1000 MS Memory Limit:  5000 KB Description Input Output Sample Input Sample Output 显然该题应使用动态规划的方法求解。 可以使用动态规划来求解最大子数组和。假设dp[i]表示以第i个元素结尾的最大子数组和,那么可以得到以下状态转移方程: dp[i] = max(dp[i-1]+a[i], a[

    2024年02月02日
    浏览(42)
  • 【动态规划系列】子数组的最大和

    💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老 导航 檀越剑指大厂系列:全面总

    2024年02月03日
    浏览(41)
  • 【学会动态规划】乘积为正数的最长子数组长度(21)

    目录 动态规划怎么学? 1. 题目解析 2. 算法原理 1. 状态表示 2. 状态转移方程 3. 初始化 4. 填表顺序 5. 返回值 3. 代码编写 写在最后: 学习一个算法没有捷径,更何况是学习动态规划, 跟我一起刷动态规划算法题,一起学会动态规划!  题目链接:1567. 乘积为正数的最长子数

    2024年02月12日
    浏览(44)
  • 动态规划——最大子数组和(Leetcode 53)

    解题代码: ===== int maxSubArray(int* nums, int numsSize){ int pre = 0, maxAns = nums[0]; 自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。 深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训

    2024年04月26日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包