
自己想的太过繁琐,直接保存最高点和最低点即可;
具体代码:class Solution {
public:
int maxAbsoluteSum(vector<int>& nums) {
int maxn=INT_MIN;
int n=nums.size();
set<int>se;
se.insert(0);
vector<int>dp(n+1,0);
for(int i=1;i<=n;i++){
dp[i]=dp[i-1]+nums[i-1];
int maxnn=*(se.rbegin());
int minn=*se.begin();
if(dp[i]>0){
maxn=max(maxn,abs(dp[i]-minn));
}else{
maxn=max(maxn,abs(dp[i]-maxnn));
}
se.insert(dp[i]);
}
return maxn;
}
};```
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)