101 Logo
onenoughtone

Problem Statement

Stock Trader with Fees

You are a stock trader who wants to maximize profit by buying and selling stocks. However, each time you sell a stock, you have to pay a transaction fee. You can make as many transactions as you want, but you need to pay the fee for each sell transaction.

Given an array prices where prices[i] is the price of a given stock on the ith day, and an integer fee representing the transaction fee for each sell operation, your task is to find the maximum profit you can achieve.

You may complete as many transactions as you like, but you need to pay the transaction fee for each transaction. You may not engage in multiple transactions simultaneously (i.e., you must sell the stock before you buy again).

Examples

Example 1:

Input: prices = [1, 3, 2, 8, 4, 9], fee = 2
Output: 8
Explanation: The maximum profit can be achieved by: - Buying at prices[0] = 1 - Selling at prices[3] = 8 - Buying at prices[4] = 4 - Selling at prices[5] = 9 The total profit is ((8 - 1) - 2) + ((9 - 4) - 2) = 8.

Example 2:

Input: prices = [1, 3, 7, 5, 10, 3], fee = 3
Output: 6
Explanation: The maximum profit can be achieved by: - Buying at prices[0] = 1 - Selling at prices[4] = 10 The total profit is ((10 - 1) - 3) = 6.

Constraints

  • 1 <= prices.length <= 5 * 10^4
  • 1 <= prices[i] < 5 * 10^4
  • 0 <= fee < 5 * 10^4

Problem Breakdown

To solve this problem, we need to:

  1. The key insight is to use dynamic programming to track the maximum profit in two states: holding a stock and not holding a stock.
  2. At each day, we have two options: buy, sell, or do nothing, and we want to maximize our profit.
  3. The transaction fee is only incurred when selling a stock, not when buying.
  4. We can use a greedy approach to avoid buying and selling on the same day, as that would only incur unnecessary transaction fees.
ProblemSolutionCode
101 Logo
onenoughtone