สมมติว่าเรามีรายการหมายเลข 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]