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

作者: _阿南_ | 来源:发表于2020-02-24 17:29 被阅读0次

题目:

给你一个数组 arr ,请你将每个元素用它右边最大的元素替换,如果是最后一个元素,用 -1 替换。
完成所有替换操作后,请你返回这个数组。
示例:
输入:arr = [17,18,5,4,6,1]
输出:[18,6,6,6,1,-1]
提示:
1 <= arr.length <= 10^4
1 <= arr[i] <= 10^5

题目的理解:

数组中计算最大值的方法max。

python实现

from typing import List

class Solution:
    def replaceElements(self, arr: List[int]) -> List[int]:
        for i in range(len(arr)):
            if i == len(arr) - 1:
                arr[i] = -1
                break
                
            arr[i] = max(arr[i+1:len(arr)])
            
        return arr
        

提交

尴尬啊,分数有点低呢


尴尬

另一个解

逆向保存最大值的方式。这个是看了题解后才想到,如果是从题目来看的话,那想不到逆向的方式。

from typing import List

class Solution:
    def replaceElements(self, arr: List[int]) -> List[int]:
        
        i = len(arr) - 1
        current_value = -1
        
        while i >= 0:
            value = arr[i]
            arr[i] = current_value
            current_value = max([value, current_value])
            
            i -= 1
        
        return arr

有进步

// END 感觉还有更好的方法呢

相关文章

网友评论

    本文标题:将每个元素替换为右侧最大元素

    本文链接:https://www.haomeiwen.com/subject/ezfbqhtx.html