前端算法Web前端之路让前端飞

跟我一起刷leetCode算法题9之Best Time to B

2017-08-08  本文已影响29人  打铁大师

122. Best Time to Buy and Sell Stock II

这是leetCode第122题

题目

Say you have an array for which the ith element is the price of a given stock on day i.

Design an algorithm to find the maximum profit. You may complete as many transactions as you like (ie, buy one and sell one share of the stock multiple times). However, you may not engage in multiple transactions at the same time (ie, you must sell the stock before you buy again).

意思是说:

你有一个数组,第i个元素是第i天给出的股票的价格。
设计一个算法去找出最大的利润。你可以完成任意数量的交易(你可以多次进行买入卖出)。然而,你可能不会在同时从事多个交易(你再次买入股票钱,必须卖出所有股票)。

举个例子:

给出数组 [3,2,4,5,2,5]
最大利润为6
做法:在2天买入,第四天卖出,第五天买入,第六天卖出,利润为6。
当然还能细分为如下操作:
在第2天买入,第三天卖出。第三天买入,第四天卖出。第五天买入,第六天卖出。利润还是6。

思路:

要使利润最大,那么每次买入卖出的必须得有利润。那么只要前一天的价格低于后一天的价格,我们就买入。第二天就卖出。再按照前面的判断,来决定是否还继续买。

代码如下:

  /**
   * @param {number[]} prices
   * @return {number}
 */
var maxProfit = function(prices) {
    var max = 0;
    var l =prices.length;
    for(var i=1;i<l;i++){
        //如果后一天价格高于前一天,就有利润
        if(prices[i]>prices[i-1]){
            max +=prices[i]-prices[i-1];
        }
    }
    return max;
};
上一篇下一篇

猜你喜欢

热点阅读