मान लीजिए कि हमारे पास एक क्रमबद्ध पूर्णांक सरणी है; हमें सबसे छोटी लुप्त धनात्मक संख्या ज्ञात करनी है। तो अगर ऐरे [4, -3, 1, -1] जैसा है, तो परिणाम 2 होगा।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
मैं सेट करें:=0 और सभी नंबरों से पहले एक 0 जोड़कर सरणी अंक अपडेट करें
-
मेरे लिए 0 से लेकर अंकों की लंबाई तक
-
जबकि nums[i]>=0 और nums[i] <अंकों और अंकों की लंबाई[nums[i]], notnums[i] −
है-
nums[nums[i]] :=nums[i]
-
अंक [i]:=अंक [अंक [i]]
-
-
-
संख्या :=1
-
मैं के लिए 1 से लंबाई की संख्या में
-
अगर संख्या =अंक [i], तो संख्या को 1 से बढ़ाएं
-
-
वापसी संख्या
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
class Solution(object): def firstMissingPositive(self, nums): i = 0 nums = [0] + nums for i in range(len(nums)): while nums[i]>=0 and nums[i]<len(nums) and nums[nums[i]]!=nums[i]: nums[nums[i]],nums[i] = nums[i],nums[nums[i]] num = 1 for i in range(1,len(nums)): if num == nums[i]: num+=1 return num ob = Solution() print(ob.firstMissingPositive([4,-3,1,-1]))
इनपुट
[4,-3,1,-1]
आउटपुट
2