1475. Final Prices With a Special Discount in a Shop LeetCode Solution
In this guide, you will get 1475. Final Prices With a Special Discount in a Shop LeetCode Solution with the best time and space complexity. The solution to Final Prices With a Special Discount in a Shop problem is provided in various programming languages like C++, Java, and Python. This will be helpful for you if you are preparing for placements, hackathons, interviews, or practice purposes. The solutions provided here are very easy to follow and include detailed explanations.
Table of Contents
- Problem Statement
- Complexity Analysis
- Final Prices With a Special Discount in a Shop solution in C++
- Final Prices With a Special Discount in a Shop solution in Java
- Final Prices With a Special Discount in a Shop solution in Python
- Additional Resources
Problem Statement of Final Prices With a Special Discount in a Shop
You are given an integer array prices where prices[i] is the price of the ith item in a shop.
There is a special discount for items in the shop. If you buy the ith item, then you will receive a discount equivalent to prices[j] where j is the minimum index such that j > i and prices[j] <= prices[i]. Otherwise, you will not receive any discount at all.
Return an integer array answer where answer[i] is the final price you will pay for the ith item of the shop, considering the special discount.
Example 1:
Input: prices = [8,4,6,2,3]
Output: [4,2,4,2,3]
Explanation:
For item 0 with price[0]=8 you will receive a discount equivalent to prices[1]=4, therefore, the final price you will pay is 8 – 4 = 4.
For item 1 with price[1]=4 you will receive a discount equivalent to prices[3]=2, therefore, the final price you will pay is 4 – 2 = 2.
For item 2 with price[2]=6 you will receive a discount equivalent to prices[3]=2, therefore, the final price you will pay is 6 – 2 = 4.
For items 3 and 4 you will not receive any discount at all.
Example 2:
Input: prices = [1,2,3,4,5]
Output: [1,2,3,4,5]
Explanation: In this case, for all items, you will not receive any discount at all.
Example 3:
Input: prices = [10,1,1,6]
Output: [9,0,1,6]
Constraints:
1 <= prices.length <= 500
1 <= prices[i] <= 1000
Complexity Analysis
- Time Complexity: O(n)
- Space Complexity: O(n)
1475. Final Prices With a Special Discount in a Shop LeetCode Solution in C++
class Solution {
public:
vector<int> finalPrices(vector<int>& prices) {
vector<int> ans{prices};
stack<int> stack;
for (int j = 0; j < prices.size(); ++j) {
// stack[-1] : = i in the problem description.
while (!stack.empty() && prices[j] <= prices[stack.top()])
ans[stack.top()] -= prices[j], stack.pop();
stack.push(j);
}
return ans;
}
};
/* code provided by PROGIEZ */
1475. Final Prices With a Special Discount in a Shop LeetCode Solution in Java
class Solution {
public int[] finalPrices(int[] prices) {
int[] ans = prices.clone();
Deque<Integer> stack = new ArrayDeque<>();
for (int j = 0; j < prices.length; ++j) {
// stack[-1] := i in the problem description.
while (!stack.isEmpty() && prices[j] <= prices[stack.peek()])
ans[stack.pop()] -= prices[j];
stack.push(j);
}
return ans;
}
}
// code provided by PROGIEZ
1475. Final Prices With a Special Discount in a Shop LeetCode Solution in Python
class Solution:
def finalPrices(self, prices: list[int]) -> list[int]:
ans = prices.copy()
stack = []
for i, price in enumerate(prices):
# stack[-1] := i in the problem description.
while stack and prices[stack[-1]] >= price:
ans[stack.pop()] -= price
stack.append(i)
return ans
# code by PROGIEZ
Additional Resources
- Explore all LeetCode problem solutions at Progiez here
- Explore all problems on LeetCode website here
Happy Coding! Keep following PROGIEZ for more updates and solutions.