코딩 공부/Leetcode

[Python] 1299. Replace Elements with Greatest Element on Right Side

일하는 공학도 2025. 1. 28. 11:40
728x90

난이도 : easy

 

index가 i일 때, i+1부터 끝까지 수 중 가장 큰 값을 arr[i]로 바꿔주는 문제

return은 arr로만 진행

 

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

처음 풀었던 방법

말 그대로 max값으로 바꿔주고, 마지막 줄을 -1로 바꾸는 형식

하지만 time limit에 걸렸다..

 

class Solution:
    def replaceElements(self, arr: List[int]) -> List[int]:
        stop = -1

        for i in range(len(arr)-1, -1, -1):
            x = arr[i]
            arr[i] = stop
            if x > stop:
                stop = x
        return arr

그렇게 새로 푼 방법!

역순으로 전개하는데, stop값으로 arr[i]를 바꿔준다

바꾼 이후로 stop값을 최대값으로 바꿔줌

 

Runtime : 16ms (87.75%)

Memory : 18.62MB (47.07%)

728x90

'코딩 공부 > Leetcode' 카테고리의 다른 글

[Python] 905. Sort Array By Parity  (0) 2025.01.30
[Python] 283. Move Zeroes  (0) 2025.01.29
[Python] 1462. Course Schedule IV  (0) 2025.01.28
[Python] 941. Valid Mountain Array  (0) 2025.01.27
[Python] 1346. Check If N and Its Double Exist  (0) 2025.01.26