Remove Duplicates from Sorted Array II

초보개발·2023년 8월 23일
0

leetcode

목록 보기
4/39

Remove Duplicates from Sorted Array II

https://leetcode.com/problems/remove-duplicates-from-sorted-array-ii/?envType=study-plan-v2&envId=top-interview-150

문제 요약

  • input
    • nums: 비내림차순 정수 배열
    • nums 배열을 제자리에서 숫자가 최대 2번까지만 나오도록 처리
      • 만약 1, 1, 1 이라면 1, 1
      • 만약 1 이라면 1

풀이

  • nums의 길이는 30_000, nums 배열 요소의 값은 -10000부터 10000까지
  • 카운터로 nums의 요소들을 센다.
  • 카운터에서 등장 횟수가 2를 초과하는 경우 nums 배열에서 숫자를 제거한다.
  • nums의 길이를 리턴한다.

수도 코드

def sol(nums):
	count = Counter(nums)
    for 숫자, 횟수 in count.items():
    	for i = 0...횟수 - 2:
        	nums에서 숫자 remove
    return nums의 길이

Solution(Runtime: 50ms)

from collections import Counter

class Solution:
    def removeDuplicates(self, nums: List[int]) -> int:
        for k, v in Counter(nums).items():
            if v <= 2:
                continue
            for _ in range(v - 2):
                nums.remove(k)
        
        return len(nums)

나는 미리 counter를 통해 요소의 개수를 세 두고, 2를 넘는 요소에 대해서 삭제를 진행했다. O(n)의 remove 메서드가 사용되었다는 단점이 있다.
다른 사람의 코드를 보면서, 인덱스로 2칸 앞의 값과 비교하면서 배열요소를 변경한 방식도 알게 되었다.

0개의 댓글