解题思路:
从右到左遍历数组每个元素,把当前元素放到一个临时变量中,然后把右边最大值max赋值给当前元素,然后再把最大值与临时变量相比,如果临时变量大与最大值max,那就把临时变量赋值给max,于是有了新的最大值,否则,保持max最大值。
以下是代码和解释:
class Solution {
public:
vector<int> replaceElements(vector<int>& arr) {
int temp=0; //临时变量
int len=arr.size(); //数组长度
int max=arr[len-1]; //从右算起,第一个最大值是最后一个元素
arr[len-1]=-1; //根据题目把最后的元素赋值为-1
for(int i=len-2;i>=0;i--) //从数组倒数第二个元素,遍历所有元素
{
temp=arr[i]; //先把当前元素赋值给临时变量 以免被覆盖 以便回头跟max最大值做对比
arr[i]=max; //先把max赋值给当前元素
if(temp>max) //然后就可以拿max跟临时变量对比,看是否需要更新最大值max
{
max=temp; //如果需要,就更新
}
}
return arr;
}
};
本文介绍了如何使用C++编程语言实现一个Solution类的方法,通过从右到左遍历数组,用临时变量保存当前元素并不断更新最大值,最终替换数组中的元素以达到题目要求。
225

被折叠的 条评论
为什么被折叠?



