classSolution{public:intmaxProfit(vector<int>& prices){// stackint len = prices.size(), ret =0;if(len ==0)return0;
stack<int> sk;
sk.push(prices[0]);for(int i =1; i < len;++i){if(sk.top()> prices[i]){
sk.pop();
sk.push(prices[i]);}else{
ret =max(ret, prices[i]- sk.top());}}return ret;}};
classSolution{public:intmaxProfit(vector<int>& prices){int ret =0, min_num =1e9;for(int i =0; i < prices.size();++i){
ret =max(ret, prices[i]- min_num);
min_num =min(prices[i], min_num);}return ret;}};
class Solution {
public:
int maxProfit(vector<int>& prices) {
int len = prices.size();
int dp[len][2];
dp[0][0] = 0, dp[0][1] = -prices[0];
for (int i = 1; i < len; i++) {
dp[i][0] = max(dp[i-1][0], dp[i-1][1] + prices[i]);
dp[i][1] = max(dp[i-1][0] - prices[i], dp[i-1][1]);
}
return dp[len-1][0];
}
};
classSolution{public:intmaxProfit(vector<int>& prices){int ans =0;int n = prices.size();for(int i =1; i < n;++i){
ans +=max(0, prices[i]- prices[i -1]);}return ans;}};