题目:
给你一个数组 arr ,请你将每个元素用它右边最大的元素替换,如果是最后一个元素,用 -1 替换。
完成所有替换操作后,请你返回这个数组。
示例:
输入:arr = [17,18,5,4,6,1]
输出:[18,6,6,6,1,-1]
解题方法:
这道题要从右向左不断更新最大值。这样就可以遍历一遍完成数组更新。
代码和结果:
class Solution {
public:
vector<int> replaceElements(vector<int>& arr) {
vector<int> re(arr.size());
int i=arr.size()-1;
re[i]=-1;
if(i==0)
return re;
i--;
re[i]=arr[i+1];
for(i=i-1;i>=0;i--)
{
re[i]=arr[i+1]>re[i+1]?arr[i+1]:re[i+1];
}
return re;
}
};
运行结果:
原题链接:https://leetcode-cn.com/problems/replace-elements-with-greatest-element-on-right-side/