मान लीजिए हमारे पास आकार n का एक दिया गया अनसॉर्टेड ऐरे A[0..n-1] है, हमें न्यूनतम लंबाई का सबअरे A[s..e] ढूंढना है ताकि इस सबअरे को सॉर्ट करने पर पूरा ऐरे सॉर्ट हो जाए। तो, यदि ऐरे [2,6,4,8,10,9,15] जैसा है, तो आउटपुट 5 होगा। सबअरे [6,4,8,10,9] होगा।
इसे हल करने के लिए, हम निम्नलिखित चरणों का पालन करेंगे:
res := nums को सॉर्ट करके एक ऐरे के रूप में
ans := 0
r को एक लिंक्ड सूची के रूप में सेट करें
i को 0 से res की लंबाई तक के लिए:
यदि nums[i], res[i] के समान नहीं है, तो r में i डालें
यदि 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