리트코드 / 파이썬 / 80. Remove Duplicates from Sorted Array II
leetcode.com/problems/remove-duplicates-from-sorted-array-ii/
풀이 방법
파이썬을 사용한다면 어렵지 않은 문제다.
정렬된 리스트에서, 중복이 2개 이상인 경우 해당 element를 삭제만 해주면 되기 때문이다.
파이썬 리스트 element 삭제 관련 함수에는 remove, del, pop 이렇게 세 가지가 있다.
1. remove
remove()는 첫번째 매칭 value/object를 삭제한다. 특정 인덱스에 있는 element 삭제는 불가하다.
만약 리스트에서 모든 매칭 value/object를 삭제하고 싶다면, 반복문을 사용해 일일이 삭제해야 한다.
myList = [1, 2, 3, 2]
myList.remove(2)
# myList : [1, 3, 2]
2. del
del()은 특정 인덱스에 위치하는 element를 삭제한다.
단, 반복문 내에서 사용하는 경우 변경되는 인덱스에 유의해야 한다.
myList = [3, 2, 2, 1]
del myList[1]
# myList : [3, 2, 1]
3. pop
pop()도 특정 인덱스에 위치하는 element를 삭제하지만, 동시에 삭제된 element를 반환한다.
단, pop() 역시 반복문 내에서 사용하는 경우 변경되는 인덱스에 유의해야 한다.
myList = [4, 3, 5]
myList.pop(1) # returns 3
# myList : [4, 5]
이 문제에서는 del을 써서 풀었다.
소스 코드
class Solution(object):
def removeDuplicates(self, nums):
"""
https://leetcode.com/problems/remove-duplicates-from-sorted-array-ii/
:type nums: List[int]
:rtype: int
"""
i = 0
while i + 2 < len(nums):
if nums[i] == nums[i + 2]:
del nums[i + 2]
else:
i += 1
return len(nums)
'Leetcode' 카테고리의 다른 글
[Leetcode][Python] 91. Decode Ways (0) | 2020.10.03 |
---|---|
[Leetcode][Python] 389. Find the Difference (0) | 2020.10.02 |
[Leetcode][Python] 229. Majority Element II (2) | 2020.09.23 |
[Leetcode][Python] 61. Rotate List (0) | 2020.09.19 |
[Leetcode][Python] 29. Divide Two Integers 3Sum (0) | 2020.09.19 |