मान लीजिए कि हमारे पास संख्याओं की एक सूची है, हम सूची को दो भागों भाग 1 और भाग 2 में विभाजित करना चाहते हैं, जैसे कि भाग 1 में प्रत्येक तत्व भाग 1 में प्रत्येक तत्व से कम या बराबर है। हमें भाग 1 की सबसे छोटी लंबाई ज्ञात करनी है जो संभव हो (0 लंबाई नहीं)।
इसलिए, यदि इनपुट संख्या =[3, 1, 2, 5, 4] की तरह है, तो आउटपुट 3 होगा, क्योंकि हम सूची को पार्ट 1 =[3, 1, 2] और पार्ट 2 =[5, की तरह विभाजित कर सकते हैं। 4].
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- p :=न्यूनतम अंक
- s :=0
- i के लिए 0 से लेकर अंकों के आकार -1 तक के लिए
- यदि nums[i] p के समान है, तो
- s :=i
- लूप से बाहर आएं
- यदि nums[i] p के समान है, तो
- p :=अंकों की अधिकतम उप-सूची [सूचकांक 0 से s तक]
- उत्तर:=एस
- i के लिए s + 1 से लेकर अंकों के आकार -1 तक के लिए
- यदि अंक[i]
- उत्तर:=मैं
- यदि अंक[i]
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
def solve(nums): p = min(nums) s = 0 for i in range(len(nums)): if nums[i] == p: s = i break p = max(nums[: s + 1]) ans = s for i in range(s + 1, len(nums)): if nums[i] < p: ans = i return ans + 1 nums = [3, 1, 2, 5, 4] print(solve(nums))
इनपुट
[3, 1, 2, 5, 4]
आउटपुट
3