정렬된 목록 A가 있다고 가정합니다. 모든 중복 항목을 제거한 후 배열의 길이를 반환해야 합니다. 이것을 O(1) 추가 공간에서 수행해야 합니다. 따라서 우리는 제자리에서 작업을 수행해야 합니다.
예를 들어 A =[1, 1, 2, 2, 2, 3, 3, 3, 3, 4, 5, 5, 5, 6]이라고 가정하면 6개의 개별 요소가 있으므로 출력은 6이 됩니다.
이 문제를 해결하려면 다음 단계를 따르십시오 -
- 목록이 비어 있으면 0 반환
- 그렇지 않으면 처음에 prev =A의 첫 번째 요소를 사용하고 length =0을 정의합니다.
- i :=1 ~ n-1, do
- A[i]가 prev와 같지 않으면
- 길이 :=길이 + 1
- 이전 :=A[i]
- A[i]가 prev와 같지 않으면
- 반환 길이
더 나은 이해를 위해 구현을 살펴보겠습니다.
예제(파이썬)
class Solution(object):def removeDuplicates(self, nums):""" :type nums:List[int] :rtype:int """ if len(nums) ==0:return 0 length =1 이전 =nums[0] index =1 for i in range(1,len(nums)):if nums[i] !=이전:길이 +=1 이전 =nums[i] nums[index] =nums[i] index+ =1 반환 lengthinput_list =[1,1,2,2,2,3,3,3,3,4,5,5,5,6]ob1 =Solution()print(ob1.removeDuplicates(input_list))사전>입력
[1,1,2,2,2,3,3,3,3,4,5,5,5,6]출력
6