मान लीजिए कि हमारे पास एक सरणी संख्या है, हमें इसे दो अलग-अलग उप-सरणी में विभाजित करना होगा, जिन्हें बाएँ और दाएँ कहा जाता है, जैसे -
-
बाएँ उप-सरणी में प्रत्येक तत्व दाएँ उप-सरणी में प्रत्येक तत्व से कम या उसके बराबर है।
-
बाएँ और दाएँ उप-सरणी खाली नहीं हैं।
-
लेफ्ट सबअरे का आकार सबसे छोटा संभव है।
इस तरह के विभाजन के बाद हमें बाईं ओर की लंबाई का पता लगाना होगा।
इसलिए, यदि इनपुट 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