leetcode-122. Best Time to Buy and Sell Stock II株を売買する最適なタイミングII
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 (i.e., buy one and sell one share of the stock multiple times). Note: You may not engage in multiple transactions at the same time (i.e., you must sell the stock before you buy again). Example 1:
配列が与えられ、そのi番目の要素は、与えられた株のi日目の価格です.あなたが得られる最大利益を計算するアルゴリズムを設計します.できるだけ多くの取引(株を複数回売買する)を完了することができます.注意:複数の取引に同時に参加することはできません(再購入前に前の株を売却しなければなりません).例1:
Input: [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.
Example 2: Input: [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.
Note that you cannot buy on day 1, buy on day 2 and sell them later, as you are
engaging multiple transactions at the same time. You must sell before buying again.
Example 3: Input: [7,6,4,3,1]
Output: 0
Explanation: In this case, no transaction is done, i.e. max profit = 0.
配列が与えられ、その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。
考え方:行き先から巡り、現在の要素が前の要素より大きい限り、resは彼らの差を加えます.class Solution {
public:
int maxProfit(vector& prices) {
if(prices.size()<2) return 0;
int res=0;
for(int i=1;iprices[i-1])
res+=prices[i]-prices[i-1];
}
return res;
}
};