101 Logo
onenoughtone

Problem Statement

Stock Trader with K Transactions

You are a stock trader who wants to maximize profit by buying and selling stocks. You are given an integer k and an array prices where prices[i] is the price of a given stock on the ith day.

Find the maximum profit you can achieve. You may complete at most k transactions.

Note: You may not engage in multiple transactions simultaneously (i.e., you must sell the stock before you buy again).

Examples

Example 1:

Input: k = 2, prices = [2, 4, 1]
Output: 2
Explanation: Buy on day 1 (price = 2) and sell on day 2 (price = 4), profit = 4 - 2 = 2.

Example 2:

Input: k = 2, prices = [3, 2, 6, 5, 0, 3]
Output: 7
Explanation: Buy on day 2 (price = 2) and sell on day 3 (price = 6), profit = 6 - 2 = 4. Then buy on day 5 (price = 0) and sell on day 6 (price = 3), profit = 3 - 0 = 3. Total profit is 4 + 3 = 7.

Constraints

  • 0 <= k <= 100
  • 0 <= prices.length <= 1000
  • 0 <= prices[i] <= 1000

Problem Breakdown

To solve this problem, we need to:

  1. The key insight is to use dynamic programming to track the maximum profit after different states of transactions.
  2. We need to consider 2k states: after buying the 1st stock, after selling the 1st stock, ..., after buying the kth stock, after selling the kth stock.
  3. For each day, we have the option to either do nothing or perform a transaction (buy or sell), and we want to maximize our profit.
  4. When k is large (k >= n/2), the problem reduces to the Best Time to Buy and Sell Stock II problem, where we can make as many transactions as we want.
ProblemSolutionCode
101 Logo
onenoughtone