您的位置:首页 > 其它

leetcode - Best Time to Buy and Sell Stock III

2013-03-03 21:50 316 查看
题目描述:点击此处

class Solution {
public:
int maxProfit(vector<int> &prices) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
int profit = 0;
vector<int>::iterator ii;
int size = prices.size();
if (size ==0 )
return 0;
int * leftProfit = new int[size+1];
int *rightProfit = new int[size+1];
int val = 1000000000;;
int j=0;
for (ii=prices.begin(); ii!=prices.end(); ii++){
if (*ii<val)
val = *ii;
if (j==0 || *ii-val > leftProfit[j-1])
leftProfit[j] = *ii - val;
else leftProfit[j] = leftProfit[j-1];
j++;
}
j = size-1;
val =-1;
for (ii=prices.end()-1; ii+1!=prices.begin(); ii--){
if (*ii > val)
val = *ii;
if (j==size-1 || val -*ii>rightProfit[j+1])
rightProfit[j] = val -*ii;
else rightProfit[j] = rightProfit[j+1];
j--;
}

if (leftProfit[size-1]!=rightProfit[0])
return -1;
profit = leftProfit[size-1];
for (j=0; j+1<size; j++){
val = leftProfit[j]+rightProfit[j+1];
if (val>profit)
profit = val;
}
delete [] leftProfit;
delete [] rightProfit;
return profit;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: