给你一个数组 arr ,请你将每个元素用它右边最大的元素替换,如果是最后一个元素,用 -1 替换。
完成所有替换操作后,请你返回这个数组。
1 <= arr.length <= 104
1 <= arr[i] <= 105
从后往前遍历将每个值都取其后的最大值即可:
class Solution {
public:
vector<int> replaceElements(vector<int>& arr) {
vector<int> behindMax(arr.size());
behindMax[arr.size() - 1] = -1;
for (int i = arr.size() - 2; i >= 0; --i) {
behindMax[i] = max(arr[i + 1], behindMax[i + 1]);
}
return behindMax;
}
};