解题思路:
- 有利润的情况肯定是从小的开始,向上增加,记录即可,同时特别i情况,后面出现了更小的值,此时有两种情况,
- 1、后面的增率很小,小于前面出现的maxprice,那么maxprice依旧是前面的那个高一点的天投入获得的最大利润
- 2、后面增率很大,差值超过了前面的,那就更不用看了,就是没分情况之前的
代码:
C++:
class Solution {
public:
int maxProfit(vector<int>& prices) {
int minprice = INT_MAX, maxprofit = 0;
for (int price : prices) {
maxprofit = max(maxprofit, price - minprice);
minprice = min(minprice, price);
}
return maxprofit;
}
};
python:
class Solution:
def maxProfit(self, prices: List[int]) -> int:
minprice = inf
maxprofit = 0
for price in prices:
maxprofit = max(maxprofit, price-minprice)
minprice = min(minprice, price)
return maxprofit