当前位置: 面试刷题>> 买卖股票的最佳时机(经典算法150题)


### 题目描述 给定一个数组,它的第 `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。 ``` ### PHP 示例代码 ```php function maxProfit($prices) { $maxProfit = 0; $length = count($prices); for ($i = 1; $i < $length; $i++) { if ($prices[$i] > $prices[$i - 1]) { $maxProfit += $prices[$i] - $prices[$i - 1]; } } return $maxProfit; } // 示例 $prices = [7,1,5,3,6,4]; echo maxProfit($prices); // 输出 7 ``` ### Python 示例代码 ```python def maxProfit(prices): max_profit = 0 for i in range(1, len(prices)): if prices[i] > prices[i - 1]: max_profit += prices[i] - prices[i - 1] return max_profit # 示例 prices = [7,1,5,3,6,4] print(maxProfit(prices)) # 输出 7 ``` ### JavaScript 示例代码 ```javascript function maxProfit(prices) { let maxProfit = 0; for (let i = 1; i < prices.length; i++) { if (prices[i] > prices[i - 1]) { maxProfit += prices[i] - prices[i - 1]; } } return maxProfit; } // 示例 const prices = [7,1,5,3,6,4]; console.log(maxProfit(prices)); // 输出 7 ``` ### 总结 这些示例代码通过遍历股票价格数组,在每一天都检查是否比前一天的价格高,如果是,则累加利润。这种方法简单且高效,适用于多次买卖股票的情况。通过码小课网站,你可以学习到更多关于算法和数据结构的知识,以帮助你更好地应对面试和日常编程挑战。
推荐面试题