买卖股票的最佳时机
描述:假设有一个数组,它的第i个元素是一支给定的股票在第i天的价格。如果你最多只允许完成一次交易(例如,一次买卖股票),设计一个算法来找出最大利润。
样例
给出一个数组样例 [3,2,3,1,2], 返回 1
刚刚我在LintCode中做了这道题,起先还是由于for循环嵌套问题,运行时间超时,下面是代吗
class Solution { public: /** * @param prices: Given an integer array * @return: Maximum profit */ int maxProfit(vector<int> &prices) { // write your code here /*if(pirces.size()==0){ return 0;}*/ if(prices.size()==0) return 0; int max=0,sum=prices.size(); int i,j; for(i=0;i<sum-1;i++) { for(j=0;j<sum-1-i;j++) { if(prices[i]<prices[i+j+1]&&max<prices[i+j+1]-prices[i]) max=prices[i+j+1]-prices[i]; } } return max; } };
下面我抛弃了一个for循环
class Solution { public: /** * @param prices: Given an integer array * @return: Maximum profit */ int maxProfit(vector<int> &prices) { // write your code here /*if(pirces.size()==0){ return 0;}*/ if(prices.size()==0) return 0; int min=prices[0],max=0,sum=prices.size(); for(int i=0;i<sum-1;i++) { if(prices[i+1]<min) { min=prices[i+1]; } else { if(max<prices[i+1]-min) max=prices[i+1]-min; } } return max; } };