Computer >> Máy Tính >  >> Lập trình >> Python

Loại bỏ các bản sao khỏi Mảng đã sắp xếp bằng Python

Giả sử chúng ta có một danh sách được sắp xếp A. Chúng ta phải trả về độ dài của mảng sau khi loại bỏ tất cả các mục trùng lặp. Chúng ta phải thực hiện điều này trong không gian thừa O (1). Vì vậy, chúng tôi phải thực hiện hoạt động tại chỗ.

Ví dụ, giả sử A =[1, 1, 2, 2, 2, 3, 3, 3, 3, 4, 5, 5, 5, 6] Khi đó đầu ra sẽ là 6, vì có sáu phần tử khác nhau.

Để giải quyết vấn đề này, hãy làm theo các bước sau -

  • Nếu danh sách trống, hãy trả về 0
  • nếu không, ban đầu lấy trước phần tử đầu tiên của A. Và xác định độ dài =0
  • for i:=1 to n-1, do
    • nếu A [i] không giống với trước, thì
      • length:=length + 1
      • trước:=A [i]
  • độ dài trả về

Hãy cho chúng tôi xem việc triển khai để hiểu rõ hơn

Ví dụ (Python)

 class Giải pháp (đối tượng):def removeDuplicates (self, nums):"" ":type nums:List [int]:rtype:int" "" if len (nums) ==0:return 0 length =1 before =nums [0] index =1 for i in range (1, len (nums)):if nums [i]! =before:length + =1 before =nums [i] nums [index] =nums [i] index + =1 return lengthinput_list =[1,1,2,2,2,3,3,3,3,4,5,5,5,6] ob1 =Solution () print (ob1.removeDuplicates (input_list))  

Đầu vào

 [1,1,2,2,2,3,3,3,3,4,5,5,5,6] 

Đầu ra

 6