मान लीजिए हमारे पास nums नामक संख्याओं की एक सूची है। हम सूची को कुछ व्यक्तिगत सबलिस्ट में विभाजित कर सकते हैं फिर प्रत्येक टुकड़े को क्रमबद्ध कर सकते हैं। हमें अधिकतम सबलिस्ट की संख्या ढूंढनी है जिन्हें हम विभाजित कर सकते हैं ताकि nums समग्र रूप से बाद में क्रमबद्ध हो जाए।
उदाहरण के लिए, यदि इनपुट nums = [4, 3, 2, 1, 7, 5] है, तो आउटपुट 2 होगा, क्योंकि हम सबलिस्ट को [4, 3, 2, 1] और [7, 5] जैसे क्रमबद्ध कर सकते हैं।
इसे हल करने के लिए, हम निम्न चरणों का पालन करेंगे:
- count := 0
- main_sum := 0, sorted_sum := 0
- प्रत्येक तत्व x के लिए nums से और y से nums के क्रमबद्ध रूप से, करें
- main_sum := main_sum + x
- sorted_sum := sorted_sum + y
- यदि main_sum, sorted_sum के समान है, तो
- count := count + 1
- count लौटाएं
बेहतर समझ के लिए निम्न कार्यान्वयन देखें:
उदाहरण
class Solution:
def solve(self, nums):
count = 0
main_sum = sorted_sum = 0
for x, y in zip(nums, sorted(nums)):
main_sum += x
sorted_sum += y
if main_sum == sorted_sum:
count += 1
return count
ob = Solution()
nums = [4, 3, 2, 1, 7, 5]
print(ob.solve(nums))
इनपुट
[4, 3, 2, 1, 7, 5]
आउटपुट
2