力扣53. 最大子数组和(动态规划)
创始人
2024-11-06 07:40:45

Problem: 53. 最大子数组和

文章目录

  • 题目描述
  • 思路及解法
  • 复杂度
  • Code

题目描述

在这里插入图片描述在这里插入图片描述

思路及解法

1.定义dp数组:dp[i]表示以nums[i]为结尾的子序列的最大子序列和;
2.状态初始化:dp[0] = nums[0],表示以nums[0]为结尾的子序列的最大子序列和为nums[0]本身;
3.状态转移:注意上述定义的dp表示的实际意义是nums[i]为结尾的子序列的最大子序列和;若当前已经得到dp[i-1],则对于dp[i]我们要么在dp[i-1]的基础上再选择讲nums[i]加进来组成一个以nums[i]为结尾的最大子序列,要么直接选择nums[i];所以直接在二者中选择一个较大的赋值给dp[i]即可
4.计算结果:在dp数组中选出最大的值返回即可;

复杂度

时间复杂度:

O ( n ) O(n) O(n);其中 n n n为原数组 n u m s nums nums的大小

空间复杂度:

O ( 1 ) O(1) O(1)

Code

class Solution { public:     /**      * Dynamic programing      * @param nums Given arr      * @return int      */     int maxSubArray(vector& nums) {         int n = nums.size();         vector dp(n + 1);         dp[0] = nums[0];         for (int i = 1; i < n; ++i) {             dp[i] = max(dp[i - 1] + nums[i], nums[i]);         }         int max = INT_MIN;         for (int i = 0; i < n; ++i) {             if (dp[i] > max) {                 max = dp[i];             }          }         return max;     } };  

相关内容

热门资讯

裸辞做“一人公司”,我后悔了 去年这个时候,一位以色列程序员正在东南亚旅行。他顺手把一个在脑子里转了很久的想法做成了产品,一个让任...
南京建成国内首个Pre-6G试... 4月21日,2026全球6G技术与产业生态大会在南京开幕。全息互动技术展台前,一名远在北京的工作人员...
超梵求职受邀参加“2025抖音... 超梵求职受邀参加“2025抖音巨量引擎成人教育行业生态大会”,探讨分享优质内容传播,服务万千学员。 ...
摩托罗拉Razr 2026(R... IT之家 4 月 22 日消息,摩托罗拉宣布新一代 Razr 折叠手机将于 4 月 29 日在美国发...
库克卸任,特纳斯领航:苹果新纪... 苹果首席执行官蒂姆·库克将卸任,硬件工程主管约翰·特纳斯将接任,苹果公司今天宣布此事。 库克将在夏季...