您的位置:首页 > 其它

[leet code] Best Time to Buy and Sell Stock

2014-01-10 04:48 363 查看
Say you have an array for which the ith element is the price of a given stock on day i.

If you were only permitted to complete at most one transaction (ie, buy one and sell one share of the stock), design an algorithm to find the maximum profit.

==========

Analysis:

My original thought was to calculate all the possible transactions by using nested loop. But got time limit excess error.

public class Solution {
public int maxProfit(int[] prices) {
if (prices.length == 0) return 0;

int max = 0;
for(int i=0; i<prices.length; i++){
for(int j=i+1; j<prices.length; j++){
int profit = prices[j] - prices[i];
if(max<profit) max = profit;
}
}
return max;
}
}


I knew it can be done in O(n), but I could not figure it out by myself, so I checked the solutions that were available in Internet. To summarize, in this approach, only the current minimum buy price would be used to calculate the profit (my original approach
was to calculate all the possible transactions).

public class Solution {
public int maxProfit(int[] prices) {
if (prices.length == 0) return 0;

int max = 0;
int min = Integer.MAX_VALUE;

for(int i=0; i<prices.length; i++){
max = Math.max(max, prices[i]-min);
min = Math.min(min, prices[i]);
}

return max;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: