1299. Replace Elements with Greatest Element on Right Side*
https://leetcode.com/problems/replace-elements-with-greatest-element-on-right-side/
题目描述
Given an array arr
, replace every element in that array with the greatest element among the elements to its right, and replace the last element with -1
.
After doing so, return the array.
Example 1:
Input: arr = [17,18,5,4,6,1]
Output: [18,6,6,6,1,-1]
Constraints:
1 <= arr.length <= 10^4
1 <= arr[i] <= 10^5
C++ 实现 1
从后向前考虑. 每次从后向前更新 imax
.
class Solution {
public:
vector<int> replaceElements(vector<int>& arr) {
vector<int> res(arr.size());
int imax = arr.back();
for (int i = arr.size() - 2; i >= 0; -- i) {
res[i] = imax;
imax = std::max(imax, arr[i]);
}
res.back() = -1;
return res;
}
};