Advertisement

LeetCode 热门问题 100:基础数组

阅读量:

1 53. 最大子数组和

题眼:“子数组是数组中的一个连续部分。”

在遍历数组的过程中,针对每个元素提出问题:“你是否愿意与前面的元素共同组成一个子数组?”若该元素表示不愿意,则需要重新开始构建新的子数组。那么,如何判断该元素是否愿意与前序元素合作呢?评判依据在于比较单独存在与联合存在的收益差异。具体而言,即比较该元素自身的数值与其与其他元素相加后的总和,从而决定哪种方式更为有利。如下图所示:

【以元素1为例,其原始数值为1,若加上-2则结果为-1,显然它更倾向于独立成组。再来看元素4,其初始值为4,若与前序元素1及-3相加,则总和为2,因此它同样更偏好单独成立一组。

解题的核心难点在于子数组必须保持连续性,每个元素在决策时仅能选择是否与前序元素共同组成一个组。

复制代码
 class Solution {

    
 public:
    
     int maxSubArray(vector<int>& nums) {
    
    int pre = 0, maxAns = nums[0];
    
     for (const

全部评论 (0)

还没有任何评论哟~