美文网首页
《剑指offer第二版》面试题63:股票的最大利润(java)

《剑指offer第二版》面试题63:股票的最大利润(java)

作者: castlet | 来源:发表于2020-03-01 19:19 被阅读0次

    题目描述

    • 假设把某股票的价格按照时间先后顺序存储在数组中,请问买卖该股票一次可能获得的最大利润是多少?例如,一只股票在某时间节点的价格为{9,11,8,5,7,12,16,14}。如果在价格为5的时候买入,16卖出。则能收获最大的利润11。

    解题思路

    1. 该题目即求数组的所有数的最大差值。
    2. 遍历数组,假设当前遍历第i个数组,用min存储前面i-1个数字的最小值,maxDiff记录当前数字和min的最大差值。遍历完数组后,返回maxDiff即可。

    代码

    int maxDiff(int[] arr) {
        if (arr == null || arr.length <= 0) {
            return -1;
        }
        int min = arr[0];
        int maxDiff = 0;
        for (int i = 1; i < arr.length; i++) {
            if (arr[i] - min > maxDiff) {
                maxDiff = arr[i] - min;
            }
            if (arr[i] < min) {
                min = arr[i];
            }
        }
        return maxDiff;
    }
    

    相关文章

      网友评论

          本文标题:《剑指offer第二版》面试题63:股票的最大利润(java)

          本文链接:https://www.haomeiwen.com/subject/mlahkhtx.html