मान लीजिए हमारे पास nums नामक संख्याओं की एक सूची है, हम सूची को दो भागों part1 और part2 में विभाजित करना चाहते हैं जैसे कि part1 में प्रत्येक तत्व part2 में प्रत्येक तत्व से कम या बराबर हो। हमें part1 की सबसे छोटी संभव लंबाई ढूंढनी है (0 लंबाई नहीं)।
उदाहरण के लिए, यदि इनपुट है nums = [3, 1, 2, 5, 4], तो आउटपुट 3 होगा, क्योंकि हम सूची को part1 = [3, 1, 2] और part2 = [5, 4] की तरह विभाजित कर सकते हैं।
एल्गोरिदम
p := min(nums)s := 0- पहला इंडेक्स
sढूंढें जहांnums[s] == p p := max(nums[:s+1])ans := siके लिएs+1सेlen(nums)-1तक:- यदि
nums[i] < p, तोans := i
- यदि
ans + 1लौटाएं
उदाहरण कार्यान्वयन
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
इनपुट
[3, 1, 2, 5, 4]
आउटपुट
3