Problem :

https://leetcode.com/problems/remove-duplicates-from-sorted-array/description/


My Solution :

class Solution:
def removeDuplicates(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
i = 1
while i < len(nums):
if nums[i-1] == nums[i]:
del nums[i]
else:
i += 1
return len(nums)


Comment :

in-place로 풀라고 하길래 그냥 무식하게 삭제했는데, 이게 효율이 별로이려나?


확인해보니 list에서 del은 O(n)이다. 매우 비 효율적인 코드였네 ㅠㅠ

아래는 다른 방식으로 풀어본 것이다.


My Solution2 :

class Solution:
def removeDuplicates(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
if not nums:
return 0
i, j = 0, 1
while j < len(nums):
if nums[i] != nums[j]:
i += 1
nums[i] = nums[j]
j += 1
return i+1