力扣 1229:将每个元素替换为右侧最大元素 LeetCode 1299: Replace Elements with Greatest Element on Right Side

解题思路:

从右到左遍历数组每个元素,把当前元素放到一个临时变量中,然后把右边最大值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;
    }
};

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值