0
点赞
收藏
分享

微信扫一扫

1299. Replace Elements with Greatest Element on Right Side*

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;
}
};

举报

相关推荐

0 条评论