Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

โปรแกรมหาค่าซ้ำและลบครั้งสุดท้ายของค่าซ้ำนั้นใน Python

สมมติว่าเรามีรายการตัวเลข A ต้องหาค่าซ้ำทั้งหมดและลบ occurrence สุดท้ายของแต่ละค่าซ้ำ

ตัวอย่าง: [10, 30, 40, 10, 30, 50] → [10, 30, 40, 50] (ลบ 10 ตัวที่ 2 และ 30 ตัวที่ 2)

ขั้นตอนการแก้ปัญหา (Two-pass với Frequency Count)

  1. นับความถี่ทั้งหมดใน d
  2. วนลูปผ่านรายการพร้อมนับ seen:
    • หาก seen[num] == d[num] และ d[num] > 1 → นี่คือ occurrence สุดท้าย ให้ลบ
    • เพิ่ม seen[num]
  3. คืนค่ารายการที่ลบแล้ว

ตัวอย่างโค้ด Python

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]

อินพุต

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

เอาต์พุต

[10, 30, 40, 50]