题目
代码
class Solution {
public:
int maxProfit(vector<int>& prices) {
//总的利润
int maxSalary=0;
if(prices.size()==0)
return maxSalary;
vector<int> step;
//计算出prices[i+1]-prices[i]的值
for(int i=0;i<prices.size()-1;i++)
{
step.push_back(prices[i+1]-prices[i]);
}
//如果是正数,则加入到总利润中
for(auto i:step)
{
if(i>0)
maxSalary+=i;
}
return maxSalary;
}
};
思路
如例子[1,2,3,4,5],我们发现总利润4=(2-1)+(3-2)+(4-3)+(5-4)。而[7,1,5,3,6,4]按照上面的代码可以算出 [-6,4,-2,3,-2],取正数,则总利润=7。我们只需要把pos+1的值减去pos的值来判断正负,正数则说明可以卖出,负数则说明不能卖出。这样取得的利润最大。