# 0123. Best Time to Buy and Sell Stock III ###### tags: `Leetcode` `Hard` `Dynamic Programming` Link: https://leetcode.com/problems/best-time-to-buy-and-sell-stock-iii/ ## 思路 先忽略初始情况 可以发现每一天只有4种可能性 买了第一股 卖了第一股 买了第二股 卖了第二股  由于如果手里还有股票没卖 一定比都卖了收益小 所以最后只要比较卖了第一股和卖了第二股的结果就可以 然后再用图里面最左边的箭头解决初始情况 ## Code ```java= class Solution { public int maxProfit(int[] prices) { int haveFirst = Integer.MIN_VALUE, haveSecond = Integer.MIN_VALUE; int soldFirst = 0, soldSecond = 0; int len = prices.length; for(int i=0; i<len; i++){ haveFirst = Math.max(haveFirst, -prices[i]); soldFirst = Math.max(soldFirst, haveFirst+prices[i]); haveSecond = Math.max(haveSecond, soldFirst-prices[i]); soldSecond = Math.max(soldSecond, haveSecond+prices[i]); } return Math.max(soldFirst, soldSecond); } } ```
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up