मान लीजिए कि हमारे पास संख्याओं की एक सूची है जिसे n आकार के अंक कहा जाता है, जहां सूची में सभी संख्याएं अंतराल [1, n] में मौजूद हैं, कुछ तत्व दो बार प्रकट हो सकते हैं जबकि अन्य केवल एक बार। हमें [1, n] से सभी संख्याएँ इस प्रकार ज्ञात करनी हैं कि वे सूची में न हों। हमें आरोही क्रम में क्रमबद्ध संख्याओं को वापस करना होगा। हमें एक ऐसा समाधान खोजने की कोशिश करनी होगी जो रैखिक समय और निरंतर स्थान लेता हो।
इसलिए, अगर इनपुट [4, 4, 2, 2, 6, 6] जैसा है, तो आउटपुट [1, 3, 5] होगा।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- गिरफ्तारी:=आकार संख्या + 1 की एक सरणी, और 0 से भरें
- प्रत्येक i के लिए अंकों में, करें
- arr[i] :=arr[i] + 1
- अनुपलब्ध :=एक नई सूची
- मैं के लिए 0 से लेकर गिरफ्तारी के आकार तक, करते हैं
- अगर गिरफ्तारी [i] 0 के समान है और मैं 0 के समान नहीं है, तो
- लापता होने के अंत में i डालें
- अगर गिरफ्तारी [i] 0 के समान है और मैं 0 के समान नहीं है, तो
- लौटना नदारद
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण
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]