这题有多种解法,这里演示的是其中最为简单易懂的那种:双循环
首先我们拿到的是 i 位置的数据,然后直接在 i+1 后面找比 i 小的数据,然后替换掉当前位置的 i ,同时跳出这次循环
class Solution { public: vector<int> finalPrices(vector<int>& prices) { for(int i = 0;i<prices.size();i++) { for(int j = i+1;j<prices.size();j++) { if(prices[j]<=prices[i]) { prices[i] = prices[i]-prices[j]; break; } } } return prices; } };
时间复杂度:O(N^2)
空间复杂度:O(1)