Chloe Jungah Kim
Chloe Jungah Kim
A blogger who writes about everything.

[Leetcode] 80. Remove Duplicates from Sorted Array II

https://leetcode.com/problems/remove-duplicates-from-sorted-array-ii/
[Leetcode] 80. Remove Duplicates from Sorted Array II

정수로 이루어진 정렬된 리스트가 주어졌을 때, 하나의 숫자는 최대 2번만 등장하도록 겹치는 숫자들을 제외한 리스트를 만드는 문제

  • in-place : 다른 리스트를 할당하지 말고 주어진 리스트 내에서 해결할 것
  • 각 원소는 최대 두 번씩만 나타나야 한다.
  • 새롭게 만들어진 리스트의 길이를 리턴
  • 리턴한 길이의 뒷부분에는 리스트에 어떤 값이 있건 상관하지 않는다.

Example 1

  • Input : nums = [1,1,1,2,2,3]
  • Output : 5, nums = [1,1,2,2,3, …]

Example 2

  • Input : nums = [0,0,1,1,1,1,2,3,3]
  • Output : 7, nums = [0,0,1,1,2,3,3, …]

Note

  • 나타나는 원소가 이전과 동일한 경우 count를 하여 2번을 초과하여 나타나는 경우에 삭제하는 방법
  • 리스트 내에서 순서를 바꾸는 방법도 가능
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class Solution:
    def removeDuplicates(self, nums: List[int]) -> int:
        if not nums :
            return 0
        now = nums[0]
        count, i = 1, 1
        while i < len(nums) :
            if nums[i] == now :
                if count < 2 :
                    count += 1
                    i += 1
                else :
                    del nums[i]
            else :
                now = nums[i]
                count = 1
                i += 1
        return len(nums)