मान लीजिए हमारे पास nums नामक संख्याओं की एक सूची है, हमें num में सबसे छोटे सबलिस्ट की लंबाई ढूंढनी है, यदि सबलिस्ट को क्रमबद्ध किया जाता है, तो पूरा सरणी nums आरोही क्रम में क्रमबद्ध हो जाएगा।
उदाहरण के लिए, यदि इनपुट है nums = [1,2,5,4,9,10], तो आउटपुट होगा 2, क्योंकि सबलिस्ट [4, 3] को क्रमबद्ध करने से हमें [0, 1, 3, 4, 8, 9] मिलेगा
इसे हल करने के लिए, हम निम्नলিখিত चरणों का पालन करेंगे:
- f := -1, l := -1
- lst := nums सूची को सॉर्ट करें
- i के लिए 0 से nums के आकार तक की रेंज में, करें
- यदि nums[i], lst[i] के समान नहीं है, तो
- यदि f, -1 के समान है, तो
- f := i
- अन्यथा,
- l := i
- यदि f, -1 के समान है, तो
- यदि nums[i], lst[i] के समान नहीं है, तो
- यदि l, -1 के समान है और f, -1 के समान है, तो
- 0 वापस करें
- l - f + 1 वापस करें
বेहतर বোঝার জন্য নিম্নলিখিত বাস্তবায়ন দেখুন:
উদাহরণ
class Solution: def solve(self, nums): f=-1 l=-1 lst=sorted(nums) for i in range(len(nums)): if nums[i]!=lst[i]: if f == -1: f=i else: l=i if l == -1 and f == -1: return 0 return l-f+1 ob = Solution() print(ob.solve([1,2,5,4,9,10]))
इनপুট
[1,2,5,4,9,10]
আউটপুট
2