मान लीजिए हमारे पास nums नामक संख्याओं की एक सूची है जिसका आकार n है जहां सूची के सभी संख्याएं अंतराल [1, n] में मौजूद हैं कुछ तत्व दो बार दिखाई दे सकते हैं जबकि अन्य केवल एक बार। हमें [1, n] से उन सभी संख्याओं को ढूंढना है जो सूची में नहीं हैं। हमें संख्याओं को आरोही क्रम में क्रमबद्ध करके वापस करना है। हमें एक ऐसे समाधान को खोजने का प्रयास करना है जो रैखिक समय और स्थिर स्थान लेता है।
उदाहरण के लिए, यदि इनपुट [4, 4, 2, 2, 6, 6] है, तो आउटपुट [1, 3, 5] होगा।
इसे हल करने के लिए हम निम्न चरणों का पालन करेंगे:
- arr := nums के आकार + 1 का सरणी, 0 से भरा हुआ
- nums में प्रत्येक i के लिए करें:
- arr[i] := arr[i] + 1
- missing := एक नई सूची
- i को 0 से arr के आकार तक के लिए करें:
- यदि arr[i] == 0 और i != 0, तो missing के अंत में i डालें
- missing वापस करें
उदाहरण
class Solution:
def solve(self, nums):
arr = [0]*(len(nums)+1)
for i in nums:
arr[i] += 1
missing = []
for i in range(len(arr)):
if arr[i] == 0 and i != 0:
missing.append(i)
return missing
ob = Solution()
print(ob.solve([4, 4, 2, 2, 6, 6]))
इनपुट
[4, 4, 2, 2, 6, 6]
आउटपुट
[1, 3, 5]