美文网首页
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