मान लीजिए कि हमारे पास आकार n का एक दिया गया अक्रमित सरणी A[0..n-1] है, हमें न्यूनतम लंबाई उपसरणी A[s..e] ढूंढनी होगी ताकि छँटाई द्वारा इस सबअरे को पूरी ऐरे को सॉर्ट किया जाएगा। इसलिए, अगर ऐरे [2,6,4,8,10,9,15] जैसा है, तो आउटपुट 5 होगा। सबएरे [6,4,8,10,9] होगा।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
res :=अंकों को एक सरणी के रूप में क्रमबद्ध करें
-
उत्तर :=0
-
r को लिंक की गई सूची के रूप में सेट करें
-
मेरे लिए 0 से लेकर रेस की लंबाई तक है
-
अगर nums[i] res[i] के समान नहीं है, तो i को r में डालें
-
-
यदि r की लंबाई 0 है, तो 0 लौटाएं, यदि r की लंबाई 1 है, तो 1 लौटाएं
-
r का अंतिम तत्व लौटाएं - r + 1 का पहला तत्व
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
class Solution(object): def findUnsortedSubarray(self, nums): res = sorted(nums) ans = 0 r = [] for i in range(len(res)): if nums[i] != res[i]: r.append(i) if not len(r): return 0 if len(r) == 1: return 1 return r[-1]-r[0]+1 ob1 = Solution() print(ob1.findUnsortedSubarray([2,6,4,8,10,9,15]))
इनपुट
[2,6,4,8,10,9,15]
आउटपुट
5