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

题目描述

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

思路分析

解法一:从右到左扫描(推荐)

核心思路

  • 从右向左维护当前最大值。
  • 用最大值替换当前位置元素,再更新最大值。


复杂度分析

  • 时间复杂度:O(n),其中 n 表示数组长度。
  • 空间复杂度:O(1),原地修改。
class Solution {
    public int[] replaceElements(int[] arr) {
        int max = -1;
        for (int i = arr.length - 1; i >= 0; i--) {
            int cur = arr[i];
            arr[i] = max;
            if (cur > max) {
                max = cur;
            }
        }
        return arr;
    }
}
func replaceElements(arr []int) []int {
	max := -1
	for i := len(arr) - 1; i >= 0; i-- {
		cur := arr[i]
		arr[i] = max
		if cur > max {
			max = cur
		}
	}
	return arr
}

相似题目

题目 难度 考察点
1299. 将每个元素替换为右侧最大元素 简单 数组遍历
238. 除自身以外数组的乘积 中等 前后缀
42. 接雨水 困难 双指针
31. 下一个排列 中等 数组操作
905. 按奇偶排序数组 简单 数组
本文作者:
本文链接: https://hgnulb.github.io/blog/2021/39761780
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处!