leetcode刷题:数组的最大子序和

本文探讨了如何使用动态规划解决LeetCode上的数组最大子序和问题。通过将当前值与前一位置的新值相加,找出新数组中的最大值,从而得到解题思路。文中还提供了相应的LeetCode解决方案。
摘要由CSDN通过智能技术生成

题目:
在这里插入图片描述
动态规划:
在这里插入图片描述
分析:上面的图是老的数组,下面的是新的数组,通过老数组的当前值加上前一个值对应位置的新数组的值,就是新数组对应位置的新值,最后找到新的队列元素中的最大值即可。

代码如下:

#include <iostream>
#include <vector>

using namespace std;
class Solution
{
public:
    int maxSubArray(vector<int>& nums)
    {
	    int length = nums.size();
	    vector<int>resultV(length,0);
	    for(int i = 0; i<length;i++)
	    {
		    if(i == 0)
		    {
			    resultV[i] = nums[i] + 0;
		    }
		    else
		    {
			    resultV[i] = nums[i]+resultV[i-1];
			    if(resultV[i] < nums[i])
			    {
				resultV[i] = nums[i];  // 这部很关键,如果前面的数列之和相加没有原数列对应位置i值大,就需要把原来数列i为hi值,赋给新的数列
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值