Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

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


Cho danh sách , tìm tất cả số trùng lặp và xóa lần xuất hiện cuối cùng của từng số đó.

Ví dụ: → [10, 30, 40, 50] (xóa 10 cuối và 30 cuối).

Giải thuật (Đếm tần suất + Duyệt xóa lần cuối)

  1. Đếm tần suất mỗi số → dict .
  2. Duyệt mảng với dict đếm đã thấy bao nhiêu lần.
  3. Khi và 1: xóa phần tử này (lần cuối), giảm index.

Ví dụ minh họa

class Solution:
    def solve(self, nums):
        seen = {}
        d = {}
        for i in range(len(nums)):
            if nums[i] not in d:
                d[nums[i]] = 1
            else:
                d[nums[i]] += 1
        i = 0
        while i < len(nums):
            n = d[nums[i]]
            if nums[i] not 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]))  # Output: [10, 30, 40, 50]

Đầu vào

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

Đầu ra

[10, 30, 40, 50]