본문 바로가기

알고리즘풀이

LeetCode: Remove Duplicates from Sorted Array

문제설명

  • 정렬된 배열이 주어졌을 때, 중복을 제거하라
  • 주어진 배열을 in-place로 수정해야 한다.
  • 반환하는 값은 중복이 제거된 배열까지의 길이다.

문제풀이

  • Two pointers 전략을 사용하여, 차례로 배열을 순회할 인덱스 교체할 인덱스 두 개를 둔다.
  • 교체할 인덱스와 순회하는 인덱스가 가리키는 값이 다를 때, 교체할 인덱스에 하나를 더한 인덱스 위치에 현재 인덱스의 값을 복사한다.
func removeDuplicates(_ nums: inout [Int]) -> Int {
    var replacedIdx = 0
    for i in 0..<nums.count {
        if nums[i] != nums[replacedIdx] {
            replacedIdx += 1
            nums[replacedIdx] = nums[i]
        }
    }
    return replacedIdx+1
}

var input1 = [0,0,1,1,1,2,2,3,3,4]
print(removeDuplicates(&input1)) // 5
print(input1) // 0,1,2,3,4...

var input2: [Int] = []
print(removeDuplicates(&input2)) // 0

var input3: [Int] = [1,1,2]
print(removeDuplicates(&input3)) // 2
print(input3) // [1,2,2]

'알고리즘풀이' 카테고리의 다른 글

LeetCode: Rotate Array  (0) 2021.03.29
LeetCode: Best Time to Buy and Sell Stock II  (0) 2021.03.28
LeetCode: Missing Number  (0) 2021.03.26
LeetCode: Valid Parentheses  (0) 2021.03.25
LeetCode: Pascal's Triangle, 파스칼 삼각형  (0) 2021.03.24