class Solution {
public:
vector<int> replaceElements(vector<int>& arr) {
}
};
1299. 将每个元素替换为右侧最大元素
给你一个数组 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
原站题解
golang 解法, 执行用时: 184 ms, 内存消耗: 6.3 MB, 提交时间: 2021-06-07 18:13:22
func replaceElements(arr []int) []int { n := len(arr) ans := make([]int, n) for i := 0; i < n - 1; i++ { ans[i] = getMax(arr[i+1:]) } ans[n-1] = -1 return ans } func getMax(arr []int) int { if len(arr) == 0 { return 0 } if len(arr) == 1 { return arr[0] } ans := arr[0] for i := 1; i < len(arr); i++ { if arr[i] > ans { ans = arr[i] } } return ans }