leetcode题目:121.买卖股票的最佳时间

1. 题目分析

leetcode题目:121.买卖股票的最佳时间
这道题,我们要用最简单,最节约内存的方式来做,我们可以用动态规划。

  • 基本思想:
  1. 思考一下,当我们遍历到第n个元素的时候,现在的最高利润就只有两个情况,第一种就是n - 1的利润,第二种就是n - min(n - 1),谁更大,就用谁。、

动态规划 前i天的最大收益 = max{前i-1天的最大收益,第i天的价格-前i-1天中的最小价格}

  1. 设置两个变量,一个用来存储前n项的最小值,一个用来存储前n项的最高利润

2. 代码实现

2.1. Python代码

class Solution(object):
    def maxProfit(self, prices):
        """
        :type prices: List[int]
        :rtype: int
        """
        _min = prices[0]
        _max = 0
        for i in prices:
            _min = min(_min,i)
            _max = max(_max,i-_min)
        return _max

2.2. Java代码

class Solution {
    public int maxProfit(int[] prices) {
        int min = prices[0];
		int max = 0;
		for(int i = 0;i < prices.length;i++){
			min = Math.min(prices[i], min);
			max = Math.max(max, prices[i] - min);
		}
		return max;
    }
}
上一篇:2021.05.11 算法题:回文数


下一篇:AtCoder Beginner Contest 121