본문 바로가기

알고리즘풀이

LeetCode: MoveZeroes

문제설명

  • 정수 배열이 주어졌을 때, 배열의 원소가 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