Swift solution for LeetCode #1299. Replace Elements with Greatest Element on Right Side
- Ref: LeetCode
- My GitHub Repo: LeetCode_Swift
- Difficulty: Easy
- Topics: Array
Problem
Given an array arr, replace every element in that array with the greatest element among the elements to its right, and replace the last element with -1.
After doing so, return the array.
배열 ‘arr’이 주어지면, 해당 배열의 모든 원소를 오른쪽의 원소 중 가장 큰 원소로 바꾸고, 마지막 원소를 ‘-1’로 바꿉니다.
그런 다음 배열을 반환하세요.
Example
Input: arr = [17,18,5,4,6,1]
Output: [18,6,6,6,1,-1]
Constraints
- 1 <= arr.length <= 10^4
- 1 <= arr[i] <= 10^5
Solution
- 배열의 마지막 원소의 직전 원소부터 역순으로 순회하며 해당 원소의 이전 원소까지의 최대값을 갱신해가며 현재 원소에 저장한다.
Submissions
- Runtime: 136 ms, faster than 96.94% of Swift online submissions for Replace Elements with Greatest Element on Right Side.
- Memory Usage: 21.8 MB, less than 70.00% of Swift online submissions for Replace Elements with Greatest Element on Right Side.
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
func replaceElements(_ arr: [Int]) -> [Int] {
guard !arr.isEmpty else {
return []
}
if arr.count == 1 {
return [-1]
}
var result = arr
let length = arr.count - 1
var max = -1
result[length] = -1
for i in (0..<length).reversed() {
max = max > arr[i + 1] ? max:arr[i + 1]
result[i] = max
}
return result
}
Leave a comment