0%

Javascript(leetcode#122) Best Time to Buy and Sell Stock II

Difficult:Medium

題目

You are given an integer array prices where prices[i] is the price of a given stock on the ith day.

On each day, you may decide to buy and/or sell the stock. You can only hold at most one share of the stock at any time. However, you can buy it then immediately sell it on the same day.

Find and return the maximum profit you can achieve.

翻譯

給定一個整數數組價格,其中價格 [i] 是給定股票在第 i 天的價格。

在每一天,您都可以決定買入和/或賣出股票。您在任何時候最多只能持有一股股票。但是,您可以購買它,然後在同一天立即出售。

找到並返還您可以實現的最大利潤。

範例

Example 1:

1
2
3
4
5
Input: prices = [7,1,5,3,6,4]
Output: 7
Explanation: Buy on day 2 (price = 1) and sell on day 3 (price = 5), profit = 5-1 = 4.
Then buy on day 4 (price = 3) and sell on day 5 (price = 6), profit = 6-3 = 3.
Total profit is 4 + 3 = 7.

Example 2:

1
2
3
4
Input: prices = [1,2,3,4,5]
Output: 4
Explanation: Buy on day 1 (price = 1) and sell on day 5 (price = 5), profit = 5-1 = 4.
Total profit is 4.

Example 3:

1
2
3
Input: prices = [7,6,4,3,1]
Output: 0
Explanation: There is no way to make a positive profit, so we never buy the stock to achieve the maximum profit of 0.

解題思路

Solution

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
var maxProfit = function(prices) {
let maxProfit = 0
let buyPrice = 0

for( let sellPrice = 1; sellPrice < prices.length; sellPrice++ ){
if ( prices[buyPrice] > prices[sellPrice] ) {
buyPrice = sellPrice
}

if ( prices[buyPrice] < prices[sellPrice] ){
maxProfit += prices[sellPrice] - prices[buyPrice]
buyPrice = sellPrice
}
}
return maxProfit
};