原题链接: https://leetcode.com/problems/best-time-to-buy-and-sell-stock-ii/
Buy and Sell Stock专题相关题目
121. Best Time to Buy and Sell Stock
122. Best Time to Buy and Sell Stock II
123. Best Time to Buy and Sell Stock III
188. Best Time to Buy and Sell Stock IV
309. Best Time to Buy and Sell Stock with Cooldown
714. Best Time to Buy and Sell Stock with Transaction Fee
1. 题目描述
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:
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 天的价格。可以多次买卖这个股票,但是不能同时买卖,必须先买,才能卖,并且如果没有卖出,不能买新的股票。
问:股票能够获得的最大收益是多少?
2. 解题思路
最大收益res初值为零。从第二天开始遍历整个数组,遇到当日股票的价格大于前一天时,就把这两天的差价加入res里面。
实现代码
class Solution {
public int maxProfit(int[] prices) {
int length = prices.length;
int res =0;
for(int i =1;i<length;i++) {
if(prices[i] > prices[i-1]) {
res += prices[i]-prices[i-1];
}
}
return res;
}
}