题目:
分析:A【i】表示i之前进行一次买卖的最大获益,B【j】表示j之后进行一次买卖的最大获益。
我都要感叹自己太强了,很好的分析!
代码:
class Solution {
public:
int maxProfit(vector
<int>& p
) {
vector
<int> A(p
.size(),0);
vector
<int> B(p
.size(),0);
int minn
=p
[0];
for(int i
=1;i
<p
.size();i
++)
{
minn
=min(minn
,p
[i
]);
A
[i
]=max(A
[i
-1],p
[i
]-minn
);
}
int maxx
=p
[p
.size()-1];
for(int i
=p
.size()-2;i
>=0;i
--)
{
maxx
=max(maxx
,p
[i
]);
B
[i
]=max(B
[i
+1],maxx
-p
[i
]);
}
maxx
=max(B
[0],A
[p
.size()-1]);
for(int i
=1;i
<p
.size()-1;i
++)
{
maxx
=max(maxx
,max(0,A
[i
])+max(0,B
[i
+1]));
}
return maxx
;
}
};
转载请注明原文地址:https://blackberry.8miu.com/read-16039.html