मान लीजिए हमारे पास संख्याओं की एक सूची A है, हमें सभी डुप्लिकेट नंबर ढूंढने हैं और उनकी अंतिम घटनाओं को हटाना है।
उदाहरण के लिए, यदि इनपुट [10, 30, 40, 10, 30, 50] है, तो आउटपुट [10, 30, 40, 50] होगा।
समाधान दृष्टिकोण
- दो डिक्शनरी बनाएं: seen (देखे गए एलिमेंट्स की गिनती के लिए) और d (प्रत्येक एलिमेंट की कुल आवृत्ति के लिए)।
- पहले पास में, सूची के प्रत्येक एलिमेंट की कुल आवृत्ति d में गिनें।
- दूसरे पास में, सूची को पार करते हुए seen में प्रत्येक एलिमेंट की गिनती बढ़ाएं।
- यदि किसी एलिमेंट की वर्तमान गिनती (seen में) उसकी कुल आवृत्ति (d में) के बराबर है और आवृत्ति 1 से अधिक है, तो उस एलिमेंट को सूची से हटा दें (क्योंकि यह उसकी अंतिम घटना है)।
- इंडेक्स को समायोजित करें और जारी रखें।
- संशोधित सूची लौटाएं।
पायथन कार्यान्वयन
class Solution:
def solve(self, nums):
seen = {}\n d = {}\n for i in range(len(nums)):\n if nums[i] not in d:\n d[nums[i]] = 1\n else:\n d[nums[i]] += 1\n i = 0\n while i < len(nums):\n n = d[nums[i]]\n if nums[i] not in seen:\n seen[nums[i]] = 1\n else:\n seen[nums[i]] += 1\n if n == seen[nums[i]] and n > 1:\n nums.pop(i)\n i -= 1\n i += 1\n return nums\n\nob = Solution()\nprint(ob.solve([10, 30, 40, 10, 30, 50]))
इनपुट
[10, 30, 40, 10, 30, 50]
आउटपुट
[10, 30, 40, 50]