牛客Top200---买卖股票的最好时机(java)

Posted 小样5411

tags:

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

题目

分析

这题还是比较简单的,它的意思就是要找最大价格和最小价格,也就是在最低点买,最高点抛,我们只要遍历一遍找到最大与最小即可,但是别忘了一种情况,就是股票没有涨,甚至在跌,所以初始化时要注意,如果min=prices[0],max=prices[0],return max-min,赋值第一个元素,那么就没有考虑跌的情况,这也是我第一次写没有考虑的。所以应该换个思路,max记录最大收益,初始max=0,就算一直跌,那么最大收益max也相应不变=0,每次更新最小值,并且用数组每个元素减去最小值,得到的值更新为最大收益,遍历一轮就能得到最大收益。

import java.util.*;

public class Solution {
    public int maxProfit (int[] prices) {
        // write code here
        //最大收益maxIncome,最小价格min,如果一直跌,或者没有涨,maxIncome=0就不变,即没有收益
        int maxIncome = 0,min = prices[0];
        for(int i = 1 ; i < prices.length ; i++){
            if(prices[i] < min){
                min = prices[i];//获取最小价格
            }else{
                maxIncome = Math.max(maxIncome,prices[i]-min);//更新最大收益
            }
        }
        return maxIncome;
    }
}

以上是关于牛客Top200---买卖股票的最好时机(java)的主要内容,如果未能解决你的问题,请参考以下文章

#yyds干货盘点# 面试必刷TOP101:买卖股票的最好时机

leetcode_121——买卖股票的最好时机(java实现)

#yyds干货盘点# 动态规划专题:买卖股票的最好时机

#yyds干货盘点# 动态规划专题:买卖股票的最好时机

数据结构与算法之深入解析“买卖股票的最好时机”的求解思路与算法示例

剑指offer(C++)-JZ63:买卖股票的最好时机