买卖股票的最佳时机 II

简介: 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。

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



设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。


注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。


示例 1:

输入: [7,1,5,3,6,4]

输出: 7


解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5-1 = 4

 

随后,在第 4 天(股票价格 = 3)的时候买入,在第 5 天(股票价格 = 6)的时候卖出, 这笔交易所能获得利润 = 6-3 = 3


示例 2:

输入: [1,2,3,4,5]

输出: 4


解释: 在第 1 天(股票价格 = 1)的时候买入,在第 5 天 (股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5-1 = 4

 

注意你不能在第 1 天和第 2 天接连购买股票,之后再将它们卖出。

    因为这样属于同时参与了多笔交易,你必须在再次购买前出售掉之前的股票。


示例 3:

输入: [7,6,4,3,1]

输出: 0


解释: 在这种情况下, 没有交易完成, 所以最大利润为 0


提示:

 

1 <= prices.length <= 3 * 10 ^ 4


贪心算法一



/**
 * @param {number[]} prices
 * @return {number}
 */
var maxProfit = function(prices) {
    var maxproft = 0
    for(var i =0;i<prices.length;i++){
        if(prices[i]>prices[i-1] ){
            maxproft+=prices[i]-prices[i-1]
        }
    }
    return maxproft
};


贪心算法二



var maxProfit = function (prices) {
    var maxproft = 0
    for (var i = 0; i < prices.length; i++) {
        maxproft += Math.max(0, prices[i] - prices[i - 1])
    }
    return maxproft
};
相关文章
|
7月前
|
算法
《LeetCode》—— 买卖股票的最佳时机
《LeetCode》—— 买卖股票的最佳时机
|
算法
【动态规划刷题 7】 买卖股票的最佳时机含冷冻期&& 买卖股票的最佳时机含手续费
【动态规划刷题 7】 买卖股票的最佳时机含冷冻期&& 买卖股票的最佳时机含手续费
|
6月前
|
存储 算法 数据可视化
买卖股票的最佳时机 II(LeetCode 122)
买卖股票的最佳时机 II(LeetCode 122)
|
7月前
|
算法
leetcode121. 买卖股票的最佳时机
leetcode121. 买卖股票的最佳时机
38 0
|
7月前
|
算法 C++
买卖股票的最佳时机(C++)
买卖股票的最佳时机(C++)
55 0
|
7月前
|
算法
leetcode-121:买卖股票的最佳时机
leetcode-121:买卖股票的最佳时机
50 0
|
7月前
|
算法
leetcode-123:买卖股票的最佳时机 III
leetcode-123:买卖股票的最佳时机 III
46 0
|
算法
买卖股票的最佳时机II
买卖股票的最佳时机II
74 0
|
算法
leetcode 122 买卖股票的最佳时机
leetcode 122 买卖股票的最佳时机
106 0
leetcode 122 买卖股票的最佳时机

热门文章

最新文章