LeetCode 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. 按奇偶排序数组 | 简单 | 数组 |
本博客所有文章除特别声明外,均采用
CC BY-NC-SA 4.0
许可协议,转载请注明出处!