LeetCode/Top Interview 150

80. Remove Duplicates from Sorted Array II

hyunkookim 2024. 11. 25. 17:42

80. Remove Duplicates from Sorted Array II

 

https://youtu.be/ycAq8iqh0TI?si=xnT3SvO1n9jkMNVq

 

class Solution:
    def removeDuplicates(self, nums: List[int]) -> int:
        k = 0  # 중복되지 않은 요소를 저장할 위치를 추적하는 포인터
        prev = nums[0] - 1  # 이전에 저장된 값을 추적하기 위한 변수, nums[0]보다 작은 값으로 초기화
        cnt = 0  # 현재 숫자가 몇 번 등장했는지 추적

        # 배열을 순회하며 중복을 제거
        for i in range(len(nums)):
            if nums[i] > prev:  # 새로운 값이 나왔을 때
                nums[k] = nums[i]  # 새로운 값을 nums[k] 위치에 저장
                k += 1  # 다음 저장 위치로 이동
                cnt = 1  # 새로운 값의 등장 횟수를 1로 초기화
                prev = nums[i]  # 현재 값을 이전 값으로 업데이트
            elif nums[i] == prev and cnt < 2:  # 동일한 값이지만 최대 2번까지 허용
                nums[k] = nums[i]  # 값을 nums[k] 위치에 저장
                k += 1  # 다음 저장 위치로 이동
                cnt += 1  # 동일한 값의 등장 횟수 증가
            else:  # 동일한 값이 2번 이상 등장한 경우
                cnt += 1  # 등장 횟수만 증가하고 저장은 하지 않음

        return k  # 중복되지 않은 요소의 개수 반환

'LeetCode > Top Interview 150' 카테고리의 다른 글

189. Rotate Array  (0) 2024.11.26
169. Majority Element  (0) 2024.11.26
26. Remove Duplicates from Sorted Array  (0) 2024.11.25
27. Remove Element  (0) 2024.11.25
88. Merge Sorted Array  (0) 2024.11.25