문제설명
- 정수 배열이 주어졌을 때, 배열의 원소가 0인 정수를 모두 배열의 끝으로 옮겨라.
- 0을 제외한 정수의 순서는 유지되어야 한다.
- 배열을 카피하지 않고 in-place로 배열을 수정하라.
문제풀이
- 배열을 뒤에서부터 순회하여 0이 발견되면 뒤에 넘기는 방식으로 계산할 수도 있다.
- 이 보다는, 배열을 앞에서부터 순회하여 0이 아닌 것들을 앞으로 밀어주는 방식이 더 깔끔하다.
func moveZeroes(_ nums: inout [Int]) {
let size = nums.count
var j = 0
for i in 0..<size {
if nums[i] != 0 {
nums.swapAt(i, j)
j += 1
}
}
}
var arr1: [Int]
arr1 = [0,1,0,3,12]
moveZeroes(&arr1)
print(arr1)
arr1 = [0]
moveZeroes(&arr1)
print(arr1)
'알고리즘풀이' 카테고리의 다른 글
LeetCode: Valid Sudoku (0) | 2021.04.07 |
---|---|
LeetCode: Largest Unique Number (0) | 2021.04.05 |
LeetCode: Plus One (0) | 2021.04.01 |
LeetCode: Intersection of Two Arrays II (0) | 2021.03.31 |
LeetCode: Single Number (0) | 2021.03.30 |