剑指42:连续子数组的最大和——动态规划的思想

本文介绍了一种在一维数组中寻找具有最大和的连续子向量的方法,并提供了一个具体的C++实现示例。该算法采用动态规划思想,通过遍历数组并实时更新当前子数组和与已知最大和,最终确定最大子数组的和。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目描述

一维模式识别中,常常需要计算连续子向量的最大和,例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)。(子向量的长度至少是1),返回最大和

               遍历加和 一旦加和过程中出现变小的情况 就重新选择起点继续加和

              选择一个最小的数做初始化 负数在内存中的补码 是用原码取反加一完成 32位有符号最小的数是 0x80000000

              动态规划的思想 递归方式分析  循环方式解决

class Solution {
public:
    int FindGreatestSumOfSubArray(vector<int> arry) {
        if(arry.empty())
            return 0;
        int temp =0,result = 0x80000000;  //有符号最小的数 -2的31次方 
        for(size_t i=0;i<arry.size();i++){
           if(temp <= 0)
               temp = arry[i];
           else
               temp += arry[i];
           if(result < temp)
               result = temp;
        }
        return result;
    }
};

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值