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

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


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

ดังนั้น หากอินพุตเป็น [10, 30, 40, 10, 30, 50] เอาต์พุตจะเป็น [10, 30, 40, 50]

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • เห็น:=แผนที่ใหม่
  • d:=แผนที่ใหม่
  • สำหรับ i ในช่วง 0 ถึงขนาดของ nums ให้ทำ
    • ถ้า nums[i] ไม่อยู่ใน d แล้ว
      • d[nums[i]]:=1
    • มิฉะนั้น
      • d[nums[i]] :=d[nums[i]] + 1
  • i:=0
  • ในขณะที่ฉัน <ขนาดของ nums ทำ
    • n:=d[nums[i]]
    • ถ้าไม่เห็น nums[i] แล้ว
      • เห็น[nums[i]]:=1
    • มิฉะนั้น
      • เห็น[nums[i]] :=เห็น[nums[i]] + 1
    • ถ้า n เหมือนกับ เห็น[nums[i]] และ n> 1 แล้ว
      • ลบอิลิเมนต์ ith ออกจาก nums
      • i :=i - 1
    • ผม :=ผม + 1
  • หมายเลขส่งคืน

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

ตัวอย่าง

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]))

อินพุต

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

ผลลัพธ์

[10, 30, 40, 50]