24. Buy Maximum Stocks if i stocks can be bought on i-th day
The problem can be found at the following link: Question Link
My Approach
To solve this problem, I used a greedy approach.
I first created a vector of pairs, where each pair represents the stock price and its corresponding day.
Then, I sorted this vector based on stock prices in ascending order.
Next, I iterated through the sorted vector, calculating the maximum number of stocks that can be bought on each day without exceeding the available budget.
I kept track of the total number of stocks bought, and the remaining budget after each purchase.
Time and Auxiliary Space Complexity
Time Complexity: The time complexity is dominated by the sorting operation, making it
O(n log n)
, where 'n' is the number of stocks.Auxiliary Space Complexity:
O(n)
, where 'n' is the number of stocks, for storing the vector of pairs.
Code (C++)
class Solution {
public:
int buyMaximumProducts(int n, int k, int price[]) {
vector<pair<int, int>> v;
for (int i = 0; i < n; ++i)
v.push_back({price[i], i + 1});
sort(v.begin(), v.end());
int out = 0;
for (auto i : v) {
int maxBuy = min(k / i.first, i.second);
out += maxBuy;
k -= i.first * maxBuy;
}
return out;
}
};
Contribution and Support
For discussions, questions, or doubts related to this solution, please visit our discussion section. We welcome your input and aim to foster a collaborative learning environment.
If you find this solution helpful, consider supporting us by giving a ⭐ star
to the getlost01/gfg-potd repository.
Last updated
Was this helpful?