题目来源:
leetcode题目,网址:1475. 商品折扣后的最终价格 - 力扣(LeetCode)
解题思路:
从右到左暴力遍历的同时记录最小值,减少不必要遍历。
解题代码:
class Solution {
public int[] finalPrices(int[] prices) {
int[] res=new int[prices.length];
int min=1001;
for(int i=prices.length-1;i>=0;i--){
if(prices[i]<min){
min=prices[i];
res[i]=prices[i];
continue;
}else if(prices[i]==min){
res[i]=0;
continue;
}
for(int j=i+1;j<prices.length;j++){
if(prices[j]<=prices[i]){
res[i]=prices[i]-prices[j];
break;
}
}
}
return res;
}
}
总结:
官方题解给出了两种解法。第一种是直接遍历。第二种是使用单调栈,栈中存储小于当前元素的右侧元素并在得出当前结果后,将当前元素入栈。