Leetcode系列 买卖股票的最佳时机

Posted 彭老希

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Leetcode系列 买卖股票的最佳时机相关的知识,希望对你有一定的参考价值。

(一)题目:

给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。注意你不能在买入股票前卖出股票

(二)示例

1、示例一

输入: [7,1,5,3,6,4]
输出: 5
解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。
注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格。

2、示例二

输入: [7,6,4,3,1]
输出: 0
解释: 在这种情况下, 没有交易完成, 所以最大利润为 0。

(三)解题思路

定义一个minn变量记录数组最小值,如果该值购入后(即miun值记录了最小值),最小值元素之后的数值与之比较,差值最大的输出i元素的index,没有则返回0

class Solution {
    public int maxProfit(int[] prices) {
        int len=prices.length;
        if(len<=1){
            return 0;
        }
        //最终答案
        int ans=0;
        //之前的最小值
        int minn=prices[0];
        int i;
        //minn首先记录了index = 0的值,在循环数组时,从index = 1开始比对
        //通过三元运算符比较
        for(i=1;i<len;++i){
            minn = prices[i-1] < minn? prices[i-1]:minn;
            ans = prices[i]-minn>ans?prices[i]-minn:ans;
        }
        return ans;
    }
}

以上是关于Leetcode系列 买卖股票的最佳时机的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode ---- 买卖股票系列问题思路与题解

Leetcode系列 买卖股票的最佳时机

LeetCode121. 买卖股票的最佳时机(C++)

Leetcode——121. 买卖股票的最佳时机

动态规划之买股票问题

LeetCode第121题—买卖股票的最佳时机—Python实现