LeetCode热题100 最大子数组和

题目描述

给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。

子数组是数组中的一个连续部分。

示例 1:

输入: nums = [-2,1,-3,4,-1,2,1,-5,4]
输出: 6
解释: 连续子数组 [4,-1,2,1] 的和最大,为 6 。

示例 2:

输入: nums = [1]
输出: 1

示例 3:

输入: nums = [5,4,-1,7,8]
输出: 23

提示:

1<=nums.length<=1051 <= nums.length <= 10^51<=nums.length<=105
−104<=nums[i]<=104-10^4 <= nums[i] <= 10^4−104<=nums[i]<=104

思路

1 考虑动态规划。

2 f[i]表示以i结尾的数组的最大和,答案为max(f[i])。

3 f[i]从f[i-1]转移过来,所以转移方程为f[i] = max(f[i-1] + nums[i], nums[i])。

代码

cpp 复制代码
class Solution {
public:
    int maxSubArray(vector<int>& nums) {
		int ans = nums[0], pre = 0;
        for(auto &t : nums)
        {
			pre = max(pre + t, t);
			ans = max(ans, pre); 
		}
		return ans;
    }
};
相关推荐
码完就睡1 小时前
数据结构——栈和队列的相互模拟
数据结构
iiiiyu1 小时前
常用API(SimpleDateFormat类 & Calendar类 & JDK8日期 时间 日期时间 & JDK8日期(时区) )
java·大数据·开发语言·数据结构·编程语言
故事和你911 小时前
洛谷-数据结构1-4-图的基本应用2
开发语言·数据结构·算法·深度优先·动态规划·图论
吴可可1232 小时前
C#合并首尾相连多段线实战
算法·c#
KMDxiaozuanfeng2 小时前
卡梅德生物技术快报|SPR 技术应用|基于 SPR 亲和力的中药活性成分筛选系统实现与数据分析
科技·算法·面试·考试
꧁细听勿语情꧂3 小时前
数据结构概念和算法、时间复杂度、空间复杂度引入
c语言·开发语言·数据结构·算法
Felven3 小时前
B. The 67th 6-7 Integer Problem
数据结构·算法
玉树临风ives3 小时前
atcoder ABC 454 题解
算法·深度优先·图论
钮钴禄·爱因斯晨3 小时前
聚焦操作系统中的PV操作
数据库·算法·系统架构·c#
云泽8083 小时前
笔试算法 - 双指针篇(一):移动零、复写零、快乐数与盛水容器
c++·算法