HelloCho

[Python] #26. Remove Duplicates from Sorted Array(Easy) 본문

코테/LeetCode

[Python] #26. Remove Duplicates from Sorted Array(Easy)

choo2969 2020. 9. 6. 02:51

문제

이 문제는 정렬된 배열이 주어질 때, 중복된 값을 제거해서 num이라는 배열에 in-place방식으로 return 하는 문제이다. 

처음 시도한 방법은 nums에 있는 값을 하나씩 살펴보면서 중복된 값을 살펴보는 방법이다. 

class Solution:
    def removeDuplicates(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        len_ = 1
        if len(nums)==0:
            return 0
        for i in range(1,len(nums)):
            if nums[i] != nums[i-1]:
                nums[len_] = nums[i]
                len_ +=1
        return len_
    

정렬된 배열이기 때문에 i-1값과 i값을 비교하면 같은 값이 있는지에 대한 여부를 다 파악할 수 있다 ! 

결과 

속도는 80ms, 메모리는 15.6MB로 통과

 

다음 방법은 python set자료구조이다. set 자료구조는 중복된 값을 허용하지(?) 않는다.

class Solution:
    def removeDuplicates(self,nums):
        tmp = list(set(nums))
        tmp.sort()
        for i,v in enumerate(tmp):
            nums[i] = v
        return len(tmp)

set 자료구조를 통해 중복 값을 없애고 정렬한 이 후에 다시 nums에 값을 하나씩 넣어준다.(in-place를 만들어 주기위해...)

결과는 

속도는 76ms, 메모리는 15.8MB... 로 통과 

Comments