共计 871 个字符,预计需要花费 3 分钟才能阅读完成。
一、题目粗心
标签: 贪婪
https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-ii
给你一个整数数组 prices,其中 prices[i] 示意某支股票第 i 天的价格。
在每一天,你能够决定是否购买和 / 或发售股票。你在任何时候 最多 只能持有 一股 股票。你也能够先购买,而后在 同一天 发售。
返回 你能取得的 最大 利润。
示例 1:
输出:prices = [7,1,5,3,6,4]
输入:7
解释:在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交易所能取得利润 = 5 – 1 = 4。
随后,在第 4 天(股票价格 = 3)的时候买入,在第 5 天(股票价格 = 6)的时候卖出, 这笔交易所能取得利润 = 6 – 3 = 3。总利润为 4 + 3 = 7。
示例 2:
输出:prices = [1,2,3,4,5]
输入:4
解释:在第 1 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 5)的时候卖出, 这笔交易所能取得利润 = 5 – 1 = 4。
总利润为 4。
示例 3:
输出:prices = [7,6,4,3,1]
输入:0
解释:在这种状况下, 交易无奈取得正利润,所以不参加交易能够取得最大利润,最大利润为 0。
提醒:
- 1 <= prices.length <= 3 * 104
-
0 <= prices[i] <= 104
二、解题思路
每天能够有限次交易,然而只能持有一支股票。想有最大利润,就得高价买高价卖。如果第二天价格比以后价格高,咱们就卖出,把差价退出利润中。若先天价格更高,咱们还能够在第二天卖出后再买入。以此类推,遍历残缺个数组后即可取得最大利润。
三、解题办法
3.1 Java 实现
public class Solution {public int maxProfit(int[] prices) { int res = 0; for (int i = 1; i < prices.length; i++) {int tmp = prices[i] - prices[i-1]; res += tmp > 0 ? tmp : 0; } return res; } }
四、总结小记
- 2022/7/29 原来把题目弄清楚、思路理分明后,写代码是这么简略