
一定要记住上来先列出转换方程,而不是觉得有矩阵就是DP
int maxProfit(int* prices, int pricesSize){
//前i天的最大收益 = max{前i-1天的最大收益,第i天的价格-前i-1天的最小价格}
int i,j;
int max = 0;
int minP = prices[0];//前i-1天的最小价格
//考虑第i天
for(i=2;i<=pricesSize;i++){
if(max < prices[i-1]-minP){
max = prices[i-1] - minP;
}
if(prices[i-1] < minP){
minP = prices[i-1];
}
}
return max;
}
这是时间超限的代码
int maxProfit(int* prices, int pricesSize){
int i,j;
int sum = 0,max = 0;
for(i=0;i<pricesSize;i++){
for(j=i+1;j<pricesSize;j++){
sum = prices[j] - prices[i];
if(sum>max){
max = sum;
}
}
}
return max;
}