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

Chương trình tìm các phần tử trùng lặp và xóa lần xuất hiện cuối cùng của chúng bằng Python

Giả sử chúng ta có một danh sách các số A, chúng ta phải tìm tất cả các số trùng lặp và loại bỏ các số xuất hiện cuối cùng của chúng.

Vì vậy, nếu đầu vào là [10, 30, 40, 10, 30, 50], thì đầu ra sẽ là [10, 30, 40, 50]

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • đã thấy:=một bản đồ mới
  • d:=một bản đồ mới
  • đối với tôi trong phạm vi từ 0 đến kích thước là num, hãy thực hiện
    • nếu nums [i] không ở d, thì
      • d [nums [i]]:=1
    • nếu không,
      • d [nums [i]]:=d [nums [i]] + 1
  • i:=0
  • while i
  • n:=d [nums [i]]
  • nếu nums [i] không được nhìn thấy, thì
    • đã xem [nums [i]]:=1
  • nếu không,
    • đã thấy [nums [i]]:=đã xem [nums [i]] + 1
  • nếu n giống như đã thấy [nums [i]] và n> 1, thì
    • xóa phần tử thứ i khỏi nums
    • i:=i - 1
  • i:=i + 1
  • trả về số
  • Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

    Ví dụ

    class Solution:
       def solve(self, nums):
          seen={}
          d={}
          for i in range(len(nums)):
             if not nums[i] in d:
                d[nums[i]]=1
             else:
                d[nums[i]]+=1
          i=0
          while i < len(nums):
             n=d[nums[i]]
             if not nums[i] in seen:
                seen[nums[i]]=1
             else:
                seen[nums[i]]+=1
             if n == seen[nums[i]] and n > 1:
                nums.pop(i)
             i-=1
             i+=1
          return nums
    ob = Solution()
    print(ob.solve([10, 30, 40, 10, 30, 50]))

    Đầu vào

    [10, 30, 40, 10, 30, 50]

    Đầu ra

    [10, 30, 40, 50]