面试题63:股票的最大利润 假设把某股票的价格按照时间先后顺序存储在数组中,请问买卖该股票一次可能获得的最大利润是多少? 1.可以买入一次股票和卖出一次股票,并非每天都可以买入或卖出一次,总共只能买入和卖出一次,且买入必须在卖出的前面的某一天 2.如果不能获取到任何利润,返回0 3.假设买入卖出均无手续费 class Solution { public: int maxProfit(vector<int>& prices) { int days = prices.size(); if(days < 2) // 如果只有1天,则利润为0; return 0; int priMin = prices[0]; // 某天的最低价格; int maxProfit = 0; // 利润最大值,初始为0; for(int i=1;i<days;i++) { int curProfit = prices[i]-priMin; // 第i天的利润 = 第i天的价格 - 前(i-1)天中某天的最低价格; if(curProfit > maxProfit) maxProfit = curProfit; if(prices[i] < priMin) priMin = prices[i]; // 更新前i天中的最低价格; } return maxProfit; } };