一次遍历,计算每支股票减掉前面的最小值时的值,然后更新可以获得的最大收益,复杂度为O(n)。注意边界条件的判断。
int maxProfit(vector<int> &prices) { // Start typing your C/C++ solution below // DO NOT write int main() function if(prices.size() == 0 || prices.size() == 1) return 0; int max = INT_MIN, min = prices[0]; int i, len = prices.size(), tmp; for(i = 1; i < len; i++){ if(prices[i] < min) min = prices[i]; tmp = prices[i] - min; if(tmp > max) max = tmp; } return max; }