列表

详情


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 的元素右侧没有其他元素。

 

提示:

原站题解

去查看

上次编辑到这里,代码来自缓存 点击恢复默认模板
class Solution { public: vector<int> replaceElements(vector<int>& arr) { } };

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
}

上一题