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)
还没有任何评论哟~
