Statement
Solution
Naive approach
The naive approach is to traverse every value of the capitals
array based on the available capital. If the current capital is less than or equal to the capital value in the array, then store the profit value in a new array that corresponds to the capital index. Whenever the current capital becomes less than the capital value in the array, we’ll select the project with the largest profit value. The selected profit value will be added to the previous capital. Repeat this process until we get the required number of projects containing the maximum profit.
We got the solution we needed, but at what cost? The time complexity is , where n represents the number of projects. This is because we need time to traverse the capitals
array in order to find affordable projects. Additonally, for each subset of affordable projects, we would need another search to narrow down the project list to the one that yields the highest profit. The space complexity for storing the profit values in a new array is .
Optimized approach using two heaps
This approach optimizes the selection of projects to maximize capital using a two-heap method. By pushing projects’ capital into a min-heap, projects are organized in ascending order of capital needed. Then, we choose projects from the min-heap that fit within our available capital, prioritizing those with the lowest costs. The selected projects are evaluated for their profitability by inserting their profits into a max-heap. This allows for prioritizing projects based on their potential return on investment. The most profitable project from the max-heap is chosen, and its profit is added to the current capital. The selected project is excluded from the list of available projects, and the same steps are repeated with the updated capital to select the next project. This process—selecting projects based on the capital requirement, evaluating project affordability, selecting for maximum profit, and updating available capital—is repeated for times to select projects that yield maximum profit.
The slide deck below illustrates the key steps of the solution, with k
and c
: