首页 > 代码库 > leetcode——Best Time to Buy and Sell Stock
leetcode——Best Time to Buy and Sell Stock
只有每次看这个图的时候才觉得c++没有白学啊~~~平常用vs的时候都各种怀念eclipse,各种怀念java~~~
这题算的是最大利润,原先我想的是找到最小值和最大值,之差不就是最大利润了么,后来想想,最小值可能在最大值之后,不能说在3号买进了回去1号卖出股票哈~然后想,记录某天之前的最小值,再记录那天之后的最大值,这么一算就能算出在某段时间内的最大利润了,再比一比好几段时间内的利润,就能算出最终的最大利润。
class Solution { // maxVal[i]和minVal[i]表示i之后的最大值和i之前的最小值,最后再遍历一边,算出最大利润public: int maxProfit(vector<int> &prices) { if(prices.empty()) return 0; const int size = prices.size(); int maxVal[size], minVal[size]; int maxProfit(INT_MIN); minVal[0] = prices[0]; maxVal[size - 1] = prices[size - 1]; for(int i = 1; i < size; i ++){ minVal[i] = min(minVal[i-1], prices[i]); } for(int i = size-2; i >= 0; i --){ maxVal[i] = max(maxVal[i+1], prices[i]); } for(int i = 0; i < size; i ++){ maxProfit = max(maxProfit, maxVal[i] - minVal[i]); } return maxProfit; }};
leetcode——Best Time to Buy and Sell Stock
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。