Your are given an array of integers prices , for which the i -th element is the price of a given stock on day i ; and a non-negative integer fee representing a transaction fee.
You may complete as many transactions as you like, but you need to pay the transaction fee for each transaction. You may not buy more than 1 share of a stock at a time (ie. you must sell the stock share before you buy again.)
Return the maximum profit you can make.
Example 1:
Input: prices = [1, 3, 2, 8, 4, 9], fee = 2 Output: 8 Explanation: The maximum profit can be achieved by:
Note:
想法如下
- 可以沿用 122. Best Time to Buy and Sell Stock II 的想法,但要把 fee 考慮進來
- 用 cash 表示買入股票後,手上的現金
- 用 profit 表示目前手上的現金,也就是最後的獲利
- 歷遍 prices,計算今天股票要不要交易,cash 和 profit 的變化,取最大值
Java(參考解答)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class Solution { | |
public int maxProfit(int[] prices, int fee) { | |
int cash = Integer.MIN_VALUE; //>> the money you have after buying a stock | |
int profit = 0; //>> the money you have after selling a stock | |
for(int p : prices) { | |
cash = Math.max(cash, profit - p); //>> max(no buy, buy today's stock); | |
profit = Math.max(profit, cash + p - fee); //>> max(no sell, sell stock with today's price plus fee) | |
} | |
return profit; | |
} | |
} |
Kotlin
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class Solution { | |
fun maxProfit(prices: IntArray, fee: Int): Int { | |
var cash = Int.MIN_VALUE // the money you have after buying a stock | |
var profit = 0 | |
for(p in prices) { | |
cash = Math.max(cash, profit - p) //max(do nothing, buy today) | |
profit = Math.max(profit, cash + p - fee) //max(do nothing, sell today) | |
} | |
return profit | |
} | |
} |
沒有留言:
張貼留言