[leetcode] 80. Remove Duplicates from Sorted Array II

Youn·2025년 3월 6일
0

Algorithm

목록 보기
40/41

문제 설명

링크
배열에서 중복 요소 제거 (최대2개)

접근1

코드

class Solution {
    func removeDuplicates(_ nums: inout [Int]) -> Int {
        var resultIndex = 1
        var duplicates = 0
        
        for (index, num) in nums.enumerated() {
            if index == 0 {
                continue
            }
            if num != nums[resultIndex - 1] {
                nums[resultIndex] = num
                resultIndex += 1
                duplicates = 0
            } else {
                duplicates += 1
                if duplicates < 2 {
                    nums[resultIndex] = num
                    resultIndex += 1
                }
            }
        }
        return resultIndex
    }
}
  • 불필요한 메모리 발생 (duplicates)

접근2

코드

class Solution {
    func removeDuplicates(_ nums: inout [Int]) -> Int {
        // 배열이 비어있거나 요소가 1개 또는 2개만 있는 경우 바로 반환
        if nums.count <= 2 {
            return nums.count
        }
        
        // 결과 인덱스를 2로 시작 (처음 두 요소는 항상 유효)
        var resultIndex = 2
        
        // 세 번째 요소부터 순회
        for i in 2..<nums.count {
            // 현재 요소가 결과 배열의 두 칸 전 요소와 다르면 추가
            if nums[i] != nums[resultIndex - 2] {
                nums[resultIndex] = nums[i]
                resultIndex += 1
            }
        }
        
        return resultIndex
    }
}
  • 이전 요소 대신 최대 2개전 요소 비교
profile
youn

0개의 댓글

관련 채용 정보