当前位置: 首页 > article >正文

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

题目描述:

给你一个数组 arr ,请你将每个元素用它右边最大的元素替换,如果是最后一个元素,用 -1 替换。

完成所有替换操作后,请你返回这个数组。

代码思路:

方法 replaceElements

  1. 输入参数:接收一个整数列表 arr

  2. 初始化:创建一个变量 tmp 并初始化为 -1。这个变量将用于存储当前遍历到的元素右侧的最大值。

  3. 遍历数组:从数组的最后一个元素开始向前遍历(即从右到左)。这样做是为了确保在替换当前元素时,其右侧的所有元素都已经被遍历过,因此 tmp 中存储的是当前元素右侧的最大值。

  4. 替换元素

    • 在每次迭代中,首先将当前元素的值存储在变量 cur 中(虽然在这个特定的实现中,cur 的值在后续操作中没有被直接使用,但保留这个步骤有助于理解代码的意图)。
    • 然后,将当前元素 arr[i] 替换为 tmp 的值。这样,arr[i] 就被替换为了其右侧的最大值(或者对于最后一个元素来说,是 -1)。
    • 最后,更新 tmp 的值为当前元素 cur 和 tmp 中的较大值。注意,这个更新操作是在替换当前元素之后进行的,因此它反映的是当前元素之前(即右侧,但因为我们是从右到左遍历的,所以实际上是“之前已遍历过的部分”)的最大值。
  5. 返回结果:遍历完成后,返回修改后的数组 arr

代码实现:

class Solution:
    def replaceElements(self, arr: List[int]) -> List[int]:
        tmp=-1
        for i in range(len(arr)-1,-1,-1):
            cur=arr[i]
            arr[i]=tmp
            tmp=max(cur,tmp)
        return arr



http://www.kler.cn/a/551772.html

相关文章:

  • 半遮挡检测算法 Detecting Binocular Half-Occlusions
  • rust笔记1-学习资料推荐
  • CHARMM-GUI EnzyDocker: 一个基于网络的用于酶中多个反应状态的蛋白质 - 配体对接的计算平台
  • Ubuntu下mysql主从复制搭建
  • three.js+WebGL踩坑经验合集(8.2):z-fighting叠面问题和camera.near的坑爹关系
  • 【系列教程】Python第三课:用前两课知识解决实际问题
  • ES8中 async 和await的用法详细的总结
  • LabVIEW无刷电机控制器检测系统
  • 【算法】回溯算法
  • 基于YOLO11深度学习的心脏超声图像间隔壁检测分割与分析系统【python源码+Pyqt5界面+数据集+训练代码】深度学习实战、目标分割、人工智能
  • rtsp协议分析
  • 蓝桥杯题目(生日蜡烛)
  • 读书笔记 - 修改代码的艺术
  • 【机器学习】衡量线性回归算法的指标:MSE、RMSE、MAE
  • DeepSeek的本地化部署
  • DeepSeek之高并发架构设计
  • Qt开发③Qt的信号和槽_概念+使用+自定义信号和槽+连接方式
  • 突破平面限制:低空经济激活城市土地“立体生长力”
  • Perl语言的系统运维
  • IntelliJ配置Maven