Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python의 정렬된 배열에서 중복 제거

<시간/>

정렬된 목록 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]
  • 반환 길이

더 나은 이해를 위해 구현을 살펴보겠습니다.

예제(파이썬)

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