给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。
如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。
注意你不能在买入股票前卖出股票。
示例 1:
输入: [7,1,5,3,6,4] 输出: 5 解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。 注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格。
示例 2:
输入: [7,6,4,3,1] 输出: 0 解释: 在这种情况下, 没有交易完成, 所以最大利润为 0。
1.
1 class Solution { 2 public: 3 int maxProfit(vector<int>& prices) { 4 auto len = prices.size(); 5 int max = 0; 6 if(len == 0) 7 { 8 return 0; 9 } 10 for(int i = 0;i<len;i++) 11 { 12 for(int j = i+1;j<len;j++ ) 13 { 14 if((prices[j]-prices[i])>max) 15 max = prices[j]-prices[i]; 16 } 17 } 18 return max; 19 } 20 };
1 class Solution { 2 public: 3 int maxProfit(vector<int>& prices) { 4 if(prices.size()== 0||prices.size() == 1) 5 { 6 return 0; 7 } 8 auto mini = prices[0]; 9 auto maxi = prices[1]-mini; 10 for(int i = 2;i<prices.size();i++) 11 { 12 if(prices[i-1]<mini) 13 mini = prices[i-1]; 14 if(maxi<(prices[i]-mini)) 15 maxi = prices[i]-mini; 16 } 17 if(maxi<0) 18 return 0; 19 return maxi; 20 } 21 };