मान लीजिए कि हमारे पास एक सरणी संख्या है, हमें इसे दो अलग-अलग उप-सरणी में विभाजित करना होगा, जिन्हें बाएँ और दाएँ कहा जाता है, जैसे -
-
बाएँ उप-सरणी में प्रत्येक तत्व दाएँ उप-सरणी में प्रत्येक तत्व से कम या उसके बराबर है।
-
बाएँ और दाएँ उप-सरणी खाली नहीं हैं।
-
लेफ्ट सबअरे का आकार सबसे छोटा संभव है।
इस तरह के विभाजन के बाद हमें बाईं ओर की लंबाई का पता लगाना होगा।
इसलिए, यदि इनपुट nums =[5,0,3,8,6] जैसा है, तो आउटपुट 3 होगा क्योंकि लेफ्ट ऐरे [5,0,3] होगा और राइट सबएरे [8,6] होगा।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
एमएक्स:=शून्य, अस्थायी:=शून्य, एनएमएक्स:=शून्य
-
अस्थायी2:=0
-
प्रत्येक i के लिए अंकों में करें
-
अगर एमएक्स शून्य के समान है, तो
-
एमएक्स:=मैं
-
एनएमएक्स:=मैं
-
अस्थायी:=अस्थायी2
-
temp2 :=temp2 + 1
-
अगले पुनरावृत्ति के लिए जाएं
-
-
अगर i>=mx, तो
-
temp2 :=temp2 + 1
-
अगर मैं>एनएमएक्स, तो
-
एनएमएक्स:=मैं
-
-
अगले पुनरावृत्ति के लिए जाएं
-
-
अन्यथा,
-
अस्थायी:=अस्थायी2
-
temp2 :=temp2 + 1
-
एमएक्स:=एनएमएक्स
-
अगले पुनरावृत्ति के लिए जाएं
-
-
-
वापसी अस्थायी+1
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
def solve(nums):
mx = None
temp = None
nmx = None
temp2 = 0
for i in nums:
if(mx==None):
mx = i
nmx = i
temp = temp2
temp2+=1
continue
if(i>=mx):
temp2+=1
if(i>nmx):
nmx = i
continue
else:
temp = temp2
temp2+=1
mx = nmx
continue
return temp+1
nums = [5,0,3,8,6]
print(solve(nums)) इनपुट
[5,0,3,8,6]
आउटपुट
3