动态规划,设置数组存储后面的数据中最大的。
我发现还是可以改进,就是只用一个int类型滚动存储最大的,减少内存开支。
int maxProfit(int* prices, int pricesSize){
int* max = malloc(sizeof(int) * pricesSize);
max[pricesSize-1] = prices[pricesSize-1];
int i;
for(i = pricesSize - 2; i >=0; --i){
max[i] = prices[i] > max[i+1] ? prices[i] : max[i+1];
}
int maxProfit = 0, x;
for(i = 0; i < pricesSize - 1; ++i){
x = max[i+1] - prices[i];
maxProfit = x > maxProfit ? x : maxProfit;
}
return maxProfit;
}