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;
    }
};
相关推荐
刀法如飞15 分钟前
Go 字符串查找的 20 种实现方式,用不同思路解决问题
算法·面试·程序员
Dlrb12112 小时前
C语言-指针数组与数组指针
c语言·数据结构·算法·指针·数组指针·指针数组·二级指针
WL_Aurora2 小时前
Python 算法基础篇之集合
python·算法
平行侠2 小时前
A15 工业路由器IP前缀高速检索与内存压缩系统
网络·tcp/ip·算法
阿旭超级学得完3 小时前
C++11包装器(function和bind)
java·开发语言·c++·算法·哈希算法·散列表
li星野4 小时前
位运算 & 数学 & 高频进阶九题通关(Python + C++)
c++·python·学习·算法
jerryinwuhan4 小时前
hello算法,简单讲(1)
算法·排序算法
y = xⁿ4 小时前
20天速通LeetCodeday15:BFS广度优先搜索
算法·宽度优先
400分4 小时前
吃透RAG核心-----语义检索与关键字检索底层原理
算法·架构
目黑live +wacyltd4 小时前
算法备案:常见驳回原因与应对策略
人工智能·算法