# 买卖股票的最佳时机 II
给你一个整数数组 prices ,其中 prices [i] 表示某支股票第 i 天的价格。
在每一天,你可以决定是否购买和 / 或出售股票。你在任何时候 最多 只能持有 一股 股票。你也可
以先购买,然后在 同一天 出售。
返回 你能获得的 最大 利润 。
输入:[1,8,6,2,5,4,8,3,7]
输出:49
解释:图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色
部分)的最大值为 49。
输入:digits = "23"
输出:["ad","ae","af","bd","be","bf","cd","ce","cf"] 示例
输入: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 。
public int maxProfit(int[] prices) | |
{ | |
int sun = 0; | |
for (int i = 1; i < prices.length; i++) | |
{ | |
// 判断今天与明天的股票利润 | |
int temp = prices[i] - prices[i - 1]; | |
if (temp > 0) | |
{ | |
sun += temp; | |
} | |
} | |
return sun; | |
} |
思路:
- 遍历整个股票交易日价格列表 price, 策略是所有上涨交易日都买卖,(赚到所有利润). 所有下降交易日都不买卖 (永不亏钱) 1. 设 tmp 为第 i-1 日买入与第 i 日卖出赚取的利润,即 tmp=prices [i] - prices [i-1] 2. 当该天利润为正 tmp>0. 则将利润加入总利润 profit, 当利润为 0 或为负,则直接跳过 3. 遍历完成后,返回总利润 profit