思路:从后向前遍历数组,用tans记录每一种可能的最大值,ans为实际最大值。
注意:若ans==0,返回nums[0] 要用long
code
class Solution {
public long maxArrayValue(int[] nums) {
long ans=0;
long tans=0;
boolean flag=true;
for(int i=nums.length-1;i>0;i--){
if(flag==true&&nums[i]>=nums[i-1]){
flag=false;
tans=nums[i]+nums[i-1];
ans=Math.max(ans,tans);
}else{
if(tans>=nums[i-1]){
tans+=nums[i-1];
ans=Math.max(ans,tans);
}else{
ans=Math.max(nums[i-1],ans);
flag=true;
tans=0;
}
}
}
if(ans==0) return nums[0];
return ans;
}
}