思路分析:
这道题采用dp的方法来解决。
(1)初始化dp数组中的第一位,因为第一个数字上的利润肯定为0。并且把第一位也设为最小值
(2)从第二位开始循环到最后一位,每一位上的最大利润就是等于当天的价格减去前面所出现的最小价格。并且要不断更新最小价格
(3)遍历整个dp数组,找到最大值并输出。
代码实现:
class Solution {
public:
int maxProfit(vector<int>& prices) {
int len=prices.size();
int dp[100010],minnum;
dp[0]=0;minnum=prices[0];
for(int i=1;i<len;i++)
{
dp[i]=prices[i]-minnum;
if(prices[i]<minnum)
minnum=prices[i];
}
int ans=0;
for(int i=0;i<len;i++)
{
if(dp[i]>ans)
ans=dp[i];
}
return ans;
}
};