拿到手,没什么特别明确的思路,但是看着别人的讨论,才知道,这是一道求最大连续子序列和的问题!!!!
思路:
代码:
class Solution {
public:
int seekMaxsum(vector<int>& p, int n) {//求最大连续子序列和
int temp = p[0]; int ans = p[0];
for (int left = 0, right = left; right < n && left <= right;) {
if (ans < 0) {
left++;
if (left < n) {
ans = p[left];
right = left;
}
}
else {
temp = max(temp, ans);
right++;
if(right<n)
ans += p[right];
}
}
return temp;
}
int maximumsSplicedArray(vector<int>& nums1, vector<int>& nums2) {
int n=nums1.size();
vector<int>p1(n);
vector<int>p2(n);
int sum1=0,sum2=0;
for(int i=0;i<n;i++){
sum1+=nums1[i];
sum2+=nums2[i];
p1[i]=nums1[i]-nums2[i];
p2[i]=nums2[i]-nums1[i];
}
int ans1=seekMaxsum(p1,n);
int ans2=seekMaxsum(p2,n);
return max(ans1+sum2,ans2+sum1);
}
};