首页 > 代码库 > 121. Best Time to Buy and Sell Stock

121. Best Time to Buy and Sell Stock

  不定期更新leetcode解题java答案。

  采用pick one的方式选择。

  题意为只允许一次买卖,给定数组为当天物品价格,问最大获益是多少。

  显然获取最大利益的方法是遍历数组,在遍历的过程中,每读取一天的价格,将之与前面遍历获取的最小值进行差运算,此为在该天卖出单次可获得最大收益。将其储存起来,并在随后的操作进行与后来的值进行比较,择取更大值,最后结果为单次交易可能最大的结果。

  代码如下:

 1 public class Solution {
 2     public int maxProfit(int[] prices) {
 3         if(prices.length == 0)
 4             return 0;
 5         int minPrice = prices[0], max = 0;
 6         for(int i = 1; i < prices.length; i++){
 7             if(prices[i] - minPrice > max)
 8                 max = prices[i] - minPrice;
 9             if(prices[i] < minPrice)
10                 minPrice = prices[i];
11         }
12         return max;
13     }
14 }

  最近在了解python,偶尔也会将python版本发出。

 1 class Solution(object):
 2     def maxProfit(self, prices):
 3         """
 4         :type prices: List[int]
 5         :rtype: int
 6         """
 7         if len(prices) == 0:
 8             return 0
 9         max = 0
10         minPrice = prices[0]
11         
12         for price in prices:
13             if max < price - minPrice:
14                 max = price - minPrice
15             if price < minPrice:
16                 minPrice = price
17                 
18         return max

 

121. Best Time to Buy and Sell Stock