美文网首页
Leetcode-122-买卖股票的最佳时机II

Leetcode-122-买卖股票的最佳时机II

作者: WindMajor | 来源:发表于2018-04-09 12:28 被阅读157次

假设有一个数组,它的第 i 个元素是一个给定的股票在第 i 天的价格。

设计一个算法来找到最大的利润。你可以完成尽可能多的交易(多次买卖股票)。然而,你不能同时参与多个交易(你必须在再次购买前出售股票)。

分析:

首先,提前知道了每一天的股票价格,所以比真实炒股容易很多。
其次,从题意可以了解,没有买卖股票数量的概念,可理解为只买卖一张股票。
最后,利润是卖出时价格减去买入的价格。

据此分析,java解答如下:

    public int maxProfit(int[] prices) {
        if (prices.length == 0 || prices.length == 1) {
            return 0;
        }

        boolean buyState = false;
        int buyValue = 0;
        int profit = 0;

        for (int i = 0; i < prices.length; i++) {
            if (i == prices.length - 1) {
                if (buyState) {
                    profit += prices[i] - buyValue;
                }
                break;
            }

            if (buyState) {
                if (prices[i] >= prices[i + 1]) {
                    /*明天的价格小于或等于今天的,卖出;否则就持有再等一天*/
                    profit += prices[i] - buyValue;
                    buyState = false;
                }

            } else {
                if (prices[i] < prices[i + 1]) {
                    //明天的价格比今天高,买入
                    buyState = true;
                    buyValue = prices[i];
                }
            }
        }
        return profit;
    }

相关文章

网友评论

      本文标题:Leetcode-122-买卖股票的最佳时机II

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