Skip to content

Latest commit

 

History

History
44 lines (31 loc) · 1.32 KB

121. Best Time to Buy and Sell Stock.md

File metadata and controls

44 lines (31 loc) · 1.32 KB

##121. Best Time to Buy and Sell Stock

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.

Example 1:
Input: [7, 1, 5, 3, 6, 4]
Output: 5

max. difference = 6-1 = 5 (not 7-1 = 6, as selling price needs to be larger than buying price)

Example 2:
Input: [7, 6, 4, 3, 1]
output: 0

In this case, no transaction is done, i.e. max profit = 0.

解法: Kadane's Algorithm <br/ > https://www.youtube.com/watch?v=epTQfFlhQBo <br/ > 要找到最大差价,就需要两个变量:差价,最低值。

需要注意一点,Math.min Math.max 写起来很好看,但是在OJ那里,它们的运算速度比不过手动用if语句比较大小。
懒得改了。
丢一个用if的,OJ那里排名更好的code链接:
https://discuss.leetcode.com/topic/8427/my-jave-accepted-solution-with-o-n-time-and-o-1-space

public int maxProfit(int[] prices) {
    int max_profit = 0;
    int min_price = Integer.MAX_VALUE;
    	
    for (int i = 0; i < prices.length; i++){
    	min_price= Math.min(prices[i], min_price);
    	max_profit = Math.max(max_profit, prices[i]-min_price);
    }
    return max_profit;     
 }