将每个元素替换为右侧最大元素

题目:

给你一个数组 arr ,请你将每个元素用它右边最大的元素替换,如果是最后一个元素,用 -1 替换。
完成所有替换操作后,请你返回这个数组。

示例:

输入:arr = [17,18,5,4,6,1]
输出:[18,6,6,6,1,-1]

解题方法:

这道题要从右向左不断更新最大值。这样就可以遍历一遍完成数组更新。

代码和结果:

class Solution {
public:
    vector replaceElements(vector& arr) {
        vector 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/

你可能感兴趣的:(将每个元素替换为右侧最大元素)