原题链接: 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;
}
}
本文探讨了在不限制交易次数的情况下,如何通过算法找出股票价格波动中的最佳买入和卖出时机,以达到最大利润。文章提供了详细的解题思路和代码实现。
357

被折叠的 条评论
为什么被折叠?



