Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >LeetCode 1299. 将每个元素替换为右侧最大元素

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

原创
作者头像
freesan44
修改于 2021-10-08 03:16:20
修改于 2021-10-08 03:16:20
5230
举报
文章被收录于专栏:freesan44freesan44

题目地址(1299. 将每个元素替换为右侧最大元素)

https://leetcode-cn.com/problems/replace-elements-with-greatest-element-on-right-side/

题目描述

代码语言:txt
AI代码解释
复制
给你一个数组 arr ,请你将每个元素用它右边最大的元素替换,如果是最后一个元素,用 -1 替换。

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

 

示例 1:

输入:arr = [17,18,5,4,6,1]
输出:[18,6,6,6,1,-1]
解释:
- 下标 0 的元素 --> 右侧最大元素是下标 1 的元素 (18)
- 下标 1 的元素 --> 右侧最大元素是下标 4 的元素 (6)
- 下标 2 的元素 --> 右侧最大元素是下标 4 的元素 (6)
- 下标 3 的元素 --> 右侧最大元素是下标 4 的元素 (6)
- 下标 4 的元素 --> 右侧最大元素是下标 5 的元素 (1)
- 下标 5 的元素 --> 右侧没有其他元素,替换为 -1


示例 2:

输入:arr = [400]
输出:[-1]
解释:下标 0 的元素右侧没有其他元素。


 

提示:

1 <= arr.length <= 104
1 <= arr[i] <= 105

思路

逆序处理

代码

  • 语言支持:Python3

Python3 Code:

代码语言:txt
AI代码解释
复制
class Solution:
    def replaceElements(self, arr: List[int]) -> List[int]:
        maxNum = -1
        resList = [maxNum]
        for i in range(len(arr)-1,-1,-1):
            val = arr[i]
            maxNum = max(val,maxNum)
            resList.append(maxNum)
        resList.pop()
        resList.reverse()
        return resList

复杂度分析

令 n 为数组长度。

  • 时间复杂度:$O(n)$
  • 空间复杂度:$O(n)$

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档