สมมติว่าเรามีรายการหมายเลข 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
- ถ้า nums[i] ไม่อยู่ใน d แล้ว
- 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]